Наверное все знают про такой замечательный модуль великолепного сервера Apache как mod_rewrite. Данный модуль идет в стандартной комплектации сервера по умолчанию и способен творить немыслимые чудеса с строками URL.
При помощи мод реврайт можно изменить любую ссылку сайта просто до не узнаваемости и при этом все будет замечательно работать. Все современные CMS (системы управления контентом) используют этот модуль веб сервера Апач для приведения ссылок в красивый вид. При этом настроить шаблоны формирования ссылок при помощи масок можно прямо из администраторской панели CMS системы.
Как же самому настроить mod rewrite? На самом деле это весьма не сложно, не смотря на то, что у данного модуля просто огромный функционал и множество способов задания правил и преобразований.
Все правила для mod rewrite пишутся в конфигурационном файле сервера .htaccess для конкретной директории. Что бы включить движок преобразования ссылок достаточно в этом файле просто прописать следующее RewriteEngine on. После чего уже можно писать правила для преобразования URL адресов сайта.
Вся суть в том, что на на сервер приходи ссылка и перед тем как с ней что то сделать сервер смотрит правила, которые прописаны ему в файлах конфигурации. Если ссылка подходит под шаблон регулярного выражения, то она преобразовывается и вызываются нужные файлы с передачей им нужных параметров, в то время как в адресной строке web браузера пользователь видит всё ту же красивую ссылку.
В файле конфигурации сервера для конкретной дирректории пишутся два параметра.
1. Шаблон с которым будет сверяться поступившая на сервер ссылка.
2. Какой url отдать далее (скриптам) при соответствии пришедшей ссылки ранее описанному шаблону из первого параметра.
При помощи директивы RewriteRule задаются собственно сами шаблоны и дальнейшие действия по преобразованию url. Директивой RewriteCond определяются условия для какого-либо правила. Перед директивой RewriteRule располагаются одна или несколько директив RewriteCond, так же их может и не быть вовсе. Следующее за ними правило преобразования используется только тогда, когда URI соответствует условиям этой директивы и также условиям этих дополнительных директив. Т.е. если строка url подошла под шаблон директивы RewriteCond то проверка переходит на второй уровень и начинается проверка шаблона директивы RewriteRule, в случае схождения с шаблоном данный url будет обрабатываться модулем mod rewrite.
Для упрощения задания правил преобразования используется директива RewriteBase, которая указывает базу для всех правил и шаблонов. Строка из не обязательной директивы RewriteBase будет автоматически дописываться в начало всех правил директив RewriteCond и RewriteRule.