URL-ы! URL-ы! URL-ы!

URLS! URLS! URLS!
автор: Билл Хамфрис (Bill Humphries) и A List Apart
перевод: Александр Качанов

1. Красивый URL - важная деталь
2. Как настроить Apache
3. RewriteRule для статических страниц

Перекройка URL-а в Apache

Веб-сервер Apache существует как для платформ Unix, так и для NT. К нему написан дополнительный компонент, который называется mod_rewrite. Этот компонент и занимается переделкой URL-а под ваши нужды. Он не входит в стандартную поставку Apache. Тем не менее даже некоторые хостинговые компании ставят его на своих машинах. Если вы работаете со своим собственным сервером, обратитесь к системному администратору, если модуль не установлен, он все сделает.

Модуль mod_rewrite работает по принципу анализа каждого запрошенного URL-а. Если URL совпадает с тем, что упомянут в его правилах замены (rewriting rules), правило применяется и запрос обрабатывается уже с переделанным URL-ом.

Если вы не знакомы с веб-сервером Apache, почитайте статью о том, как его надо конфигурировать. Лучше всего прописывать модуль mod_rewrite в конфигурационном файле сервера httpd.conf, но можно модуль применять и к определенному каталогу отдельно с помощью файла .htaccess. Если вы не имеете доступа к файлу httpd.conf, пожалуй стоит воспользоваться .htaccess, но помните, что это может сказаться на производительности, так как Apache придется считывать .htaccess всякий раз, когда обращаются с запросом к данному каталогу.

Цель

Цель - создать такое правило для mod_rewrite, которое превратит

/archives /ГГГГ/ММ/ДД

в

/archives.cgi?date=ГГГГ-ММ-ДД

или что либо подобное, похожее на ваш URL к скрипту.

План

Начнем с URL типа /archives/ГГГГ/ММ/ДД и переделаем в /archives.cgi?date=ГГГГ-ММ-ДД. Для этого нам понадобится несколько вещей:

  1. Распознать URL
  2. Выделить из него /ГГГГ/ММ/ДД и превратить его в ГГГГ-ММ-ДД
  3. Записать окончательный URL в виде /archives.cgi?date=ГГГГ-ММ-ДД

Регулярные выражения и RewriteRule

Для данной трансформации необходимо прописать две директивы модуля mod_rewrite: RewriteEngine и RewriteRule. Директива RewriteEngine просто включает или выключает использование модуля. Таким образом если переделка URL-а сейчас не нужна, ее можно выключить и при этом сохранить на будущее ту директиву, что использовалась для переделки.

Если вы хотите задать правило для каталога с помощью файла .htaccess, пропишите в нем следующее:

RewriteEngine On
RewriteRule ^archives/([0-9]+)/([0-9]+)/([0-9]+) archives.cgi?date=$1-$2-$3

Данное правило во-первых отлавливает подстроку "archives", за которой идут три группы цифр ([0-9]+) разделенные знаком "/", и переписывает ее в вид "archives.cgi?date=ГГГГ-ММ-ДД". Разборщик строки запоминает ссылки на совпадения, так что мы можем использовать символы $1, $2, $3 - (первое совпадение, второе и так далее…)

Внимание: Если в ваших страницах используются относительные ссылки, эти ссылки будут обрабатываться относительно /archives/ГГГГ/ММ/ДД , а не /archives. Это значит, что ваши относительные ссылки работать не будут. В качестве выхода - используйте элемент <BASE> в заголовке страницы.

1. Красивый URL - важная деталь
2. Как настроить Apache
3. RewriteRule для статических страниц


Самые популярные статьи:


что такое система Орфус?

Все материалы данного сайта раздаются под лицензией Creative Commons License  2.0
подробнее
Webmascon Daily - RSS-формат

Журнал «Системный Администратор» — Online

  • — Удобное чтение online
  • — Архивы с 2003 года
  • — Оперативный выход новых номеров
  • — Более 50 номеров и 700 статей
  • — Бесплатные статьи

Все материалы лицензированы.

www.av5.com/jns

Удобный хостинг $6/мес.

  • — Поддержка PHP/Perl
  • — 500 Мб места на диске
  • — 15 Гб трафика в месяц
  • — Тестовые аккаунты
  • — Статистика
  • — MySQL база данных
  • — Панель управления
  • — SSH/FTP доступ
  • — 24x7x365 поддержка на русском
  • — Регистрация доменов
  • — Бесплатные поддомены
  • — 100+ PHP скриптов
www.av5.com
Гид в Токио
Rambler's Top100
Rating All.BY
Akavita
Valid XHTML 1.0!