CFA LogoCFA Logo Computer
Загрузка поиска
Новости Компьютеры Прайс-лист [Новое] Прайс-лист [Б/У] Для ноутбуков Конфигуратор ПК Заказ, Оплата, Доставка Сервис объявления Драйвера Статьи Как нас найти Контакты
Новости
RSS канал новостей
Тайваньская компания MSI осуществила сегодня анонс фирменной модели графического ускорителя GeForce ...
Компания Manli опубликовала официальный пресс-релиз, посвященный своей новой видеокарте. Энтузиастам ...
Компания Sony накануне раскрыла некоторые подробности доступности своего нового флагманского смартфона ...
В списке новинок формата фаблет японская компания Sony готовит нового флагмана, который в настоящее ...
Компания Acer сделала наконец официально доступным свой новый ноутбук, рассчитанный на профессиональных ...
Самое интересное
Программаторы 25 SPI FLASH Адаптеры Optibay HDD Caddy Драйвера nVidia GeForce Драйвера AMD Radeon HD Игры на DVD Сравнение видеокарт Сравнение процессоров

АРХИВ СТАТЕЙ ЖУРНАЛА «МОЙ КОМПЬЮТЕР» ЗА 2003 ГОД

Красивый URL

Юрий ГОЛУБОВ holubow@ua.fm

Многие начинающие веб-мастера встречаются с проблемой обработки длинных адресов в строке браузера. Например, у вас есть динамическая страница, которая обрабатывает запросы на скачивание файлов, с адресом вида http://www.my-site.com.ua/cgi-bin/download/get-files.cgi. Для обработки файла нужно ввести категорию файла (к примеру, «мои файлы» —id=my-files) и название (допустим, name=My_Editor), после чего у нас получится что-то вроде http://www.my-site.com.ua/cgi-bin/download/get-files.cgi?id=my-files&name=My_Editor. Согласитесь, такой вид крайне неудобен для конечного пользователя, особенно если адрес ему приходится вводить вручную. Избежать подобных сложностей можно с помощью инструмента mod_rewrite из стандартного набора сервера Apache (http://www.apache.org). Он позволяет созданную выше конструкцию преобразовать в запись вроде http://www.my-site.com.ua/my-files/dn_pg=My_Editor. Или вот еще один пример. Допустим, вам надо вывести статистические данные о работе компании за каждый месяц. Если не использовать mod_rewrite, то страница будет иметь вид вроде http://www.my-site.com.ua/cgi-bin/statistic.cgi?year=2000?month=06. Но все это можно представить значительно проще: http://www.my-site.com.ua/stat/2000/06. Подобных примеров использования mod_rewrite можно привести уйму, поэтому не будем долго разглагольствовать о теории, а быстрее перейдем к практике.

Итак, приступим к созданию простых адресов. Для начала нужно выяснить, поддерживает ли ваш сервер mod_rewrite. Если вы пользуетесь платным хостингом, обратитесь в службу поддержки или к администратору сервера с просьбой уточнить этот момент и в случае чего добавить такую возможность. Если же вы используете бесплатный хостинг, то придется вас огорчить — наверняка у вас ничего не получится . Правда, есть и приятные исключения — «забугорные» http://hypermart.net/и http://virtuave.net/.

Теперь давайте разберемся с процедурой установки перенаправлений. Все данные о новых URL-адресах нужно прописывать в файл .htaaccess, который следует разместить в основном каталоге сервера, причем закачивать его на сервер нужно в двоичном формате. Вначале документа пропишите такие строки:

Далее в каждой строке указывается правило перенаправления. Допустим, нам нужно сделать перенаправление с http://www.my-site.com.ua/cgi-bin/download/get-files.cgi?id=xxx&name=xxx на http://www.my-site.com.ua/xxx/dn_pg=xxx. Приписываем в .htaaccess такую строку:

Теперь давайте немного разберемся с синтаксисом построения указаний. Команда RewriteRule указывает серверу на перенаправление, ^/(.+)/dn_pg=(.+) — какой запрос перенаправлять, /cgi-bin/download.cgi?id=$1&name=$2 — реальный адрес перенаправления, наконец, [T=application/x-httpd-cgi,L] указывает на CGI/Perl-скрипт.

Теперь зададим правило для перенаправления по второму примеру:

Последняя строка задает формат, в данном случае цифры от 0 до 9 —([0-9]+), — и перенаправляет каждую цифру на соответствующий адрес ($1,$2). Запись ([0-9]+) свидетельствует про обработку только цифр, то есть буквы затрагиваться не будут.

Также бывают ситуации, когда нужно сделать редирект со старой страницы на новую. Вот пример подобного сценария:

Бывают такие ситуации, когда нужно, чтобы начальная страница запускалась с множеством параметров (это когда вы используете CGI- или PHP-скрипты и хотите, чтобы при первой загрузке сайта в них передавались какие-нибудь данные). Допустим, мы будем передавать данные с http://www.my-site.com.ua на http://www.my-site.com.ua/cgi-bin/index.cgi?topic=main&page=1. Чтобы организовать такой редирект, нам нужно прописать следующие строки:

Теперь, когда пользователь набирает в строке браузера http://www.my-site.com.ua, то он перенаправится на http://www.my-site.com.ua/cgi-bin/index.cgi?topic=main&page=1, но в строке браузера по-прежнему будет значиться адрес http://www.my-site.com.ua. Если добавить в [T=application/x-httpd-cgi,L] параметр R, то перенаправление будет явным, а не скрытым.

Теперь давайте сделаем сложный перевод, например, чтобы первая страница (чаще всего это index.html) перенаправлялась на http://www.my-site.com.ua/home, а http://www.my-site.com.ua/home в свою очередь скрыто исполняла CGI-скрипт с параметрами http://www.my-site.com.ua/cgi-bin/index.cgi?topic=main&page=1. Для этого снова редактируем файл .htaccess, в котором пишем следующее:

Сначала перенаправляем http://www.my-site.com.ua на home, далее index.html на тот же home (на тот случай, если кто-нибудь вздумает набрать в строке браузера http://www.my-site.com.ua/index.html) и в конце перенаправляем home на cgi-bin/index.cgi?topic=main&page=1. Хочу заметить одну важную деталь — если в строке браузера ввести http://www.my-site.com.ua/home/ (в конце добавим /), то пользователь получит ошибку. Это связано со спецификой компонента mod_rewrite. Поэтому для таких ситуаций нужно прописывать еще одну строку:

Напоследок хочу сказать, что mod_rewrite можно использовать и для более сложных задач, например для поиска нужных файлов в разных каталогах, а также для виртуальных доменов.

P.S. Если вы неплохо владеете английским, то можете зайти на http://www.engelschall.com/pw/apache/rewriteguide, где найдете полное описание mod_rewrite.

Рекомендуем ещё прочитать:






Данную страницу никто не комментировал. Вы можете стать первым.

Ваше имя:
Ваша почта:

RSS
Комментарий:
Введите символы: *
captcha
Обновить






Рейтинг@Mail.ru
Хостинг на серверах в Украине, США и Германии. © www.sector.biz.ua 2006-2015 design by Vadim Popov