Белорусская цифровая библиотека





 Может это и есть предсказанный Конец Света?

 В ИНТЕРНЕТЕ

 Магнитопульсирующий двигатель
 Вертикальная мышка
 В ближайшие 100 лет на полюсах потеплеет на 10 градусов
 Проводники на монтажных платах будут отныне выращивать
 Найдена дыра в протоколе SSL
 Робот идет в школу вместо ученика
 Форум на ПротоПлексе обогнал всех
 Самогонный аппарат на основе AMD
 Биокомпьютер считает в 100 тысяч раз быстрее
 Гибрид самолета и вертолета готовится к испытаниям
 Европейцы отправят к Луне аппарат с ионным двигателем
 Фильм по мотивам игры MechWarrior
 Обнаружены древнейшие в Европе следы человеческих ног
 CeBIT 2003: 250-гигабайтный внешний жёсткий диск EZQuest
 Шведский вирус спекулирует на войне в Ираке
 Огромный кальмар обнаружен вблизи Антарктики
 Мошенник из Microsoft умер от отравления

 WEB-СТРОИТЕЛЬСТВО

 Что такое портал?
 Философия творчества в Интернете
 РМП ProtoPlex: взгляд со стороны
 Что такое объектно-ориентированное программирование?
 Создание Web-приложений в среде Delphi
 Красивый URL
 Службы Windows 2000 Server
 Почта на web-интерфейсе
 MySQL. Установка. Настройка. Программирование
 VRML не умирает, просто меняет название
 Образец - не шедевр, создать несложно
 Качественный хостинг как основа успеха сайта
 Дубликаты, неопределенные значения, первичные и возможные ключи

 ПРОГРАММЫ

 VentaFax & Voice 5.3 (build 15)
 SpamEater Pro 4.00 (Build 85) BETA 6
 The Bat! 1.62i
 Opera 7.03

 УГОЛОК ГЕЙМЕРА

 BloodRayne (демо-версия)
 Mafia: The City of Lost Heaven
 Runaway: A Road Adventure
 Gothic II (Готика 2)

 ЮМОР

 Бомбить...



Красивый URL


Юрий ГОЛУБОВ
holubow@ua.fm
http://www.mycomp.com.ua/
Март 17, 2003
[11:22]

Многие начинающие веб-мастера встречаются с проблемой обработки длинных адресов в строке браузера. Например, у вас есть динамическая страница, которая обрабатывает запросы на скачивание файлов, с адресом вида 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.


Вся информация, содержащаяся в данном журнале, является интеллектуальной собственностью своих законных авторов. При перепечатке материалов из журнала для соблюдения закона об авторских правах необходимо указывать имена и все ссылки авторов. Также необходимо ставить видимую ссылку на Российский мультипортал ProtoPlex <HTTP://PROTOPLEX.RU>


@ library.by