Эта статья была написана мной во время
разработки нового движка для сайта.
Как и все пользователи интернета,
я с некоторого времени (примерно год назад) стал замечать, что все больше и
больше популярных сайтов переходят от url вида http://site.net?pid=general&id=5&s=98465
на псевдостатику или на ЧПУ (Человеку Понятный УРЛ), т.е. вместо http://site.net?pid=general&id=5&s=98465 в строке браузера будет
что-то похожее на http://site.net/general/45/5/98465/.
И я стал искать документацию о том, что пока не понимал. Нашел пару статей, в
которых подобное делалось с помощью .htaccess и 404
ошибки, но это было не совсем то, что мне нужно и тогда мне случайно попалась
документация по mod_rewrite.
mod_rewrite – это специальный модуль
для серверов Apache,
который был специально сделан для создания сайтов с ЧПУ. Он был написан в апреле
1996 года и эксклюзивно подарен The
Apache Group в июле
1997. Модуль представляет собой библиотеку расширения для серверов типа Apache. Находится в папке modules, в корневой папке апача и
называется обычно mod_rewrite.so
(устанавливается отдельно). С помощью mod_rewrite
можно всего парой строк в .htaccess
сделать понятный для человека url. Для упрощения всех команд и правил
этот модуль использует Perl-совместимые регулярные выражения.
Например, при использовании следующего правила:
RewriteRule
^([A-Za-z]+)/([0-9]+)$ index.php?dir=$1&s=$2 [L]
Запрос вида
http://site.net/shop/50/ будет
рассматриваться сервером как http://site.net/index.php?dir=shop&s=50 и плюс ко всему
контроль ввода значений, а это уже какая-никакая, но защита. Т.к. переменной
dir может быть
присвоено толь значение из латинских букв, исключая символы, а переменной s
только целочисленные значения.
Для установки mod_rewrite вам
нужно его сначала где-нибудь скачать, поищите в yandeks’е “mod_rewrite”, обязательно найдете.
Затем, открываете папку с модулями апача, у меня это usr/local/apache/modules/ и копируете
туда mod_rewrite.so. Затем заходите
в папку usr/local/apache/conf/ и
открываете httpd.conf, находите
строчку #LoadModule rewrite_module
modules/mod_rewrite.so и убираете #. Если такой строчки нет, то
добавляете эту строчку в любое место. Затем ниже дописываете RewriteEngine On, для того, что бы это все
работало. А что бы изменения вступили в силу вам необходимо перезапустить
сервер.
Если у вас нет прав доступа к
файлам apache, тогда
обращайтесь к своему хостеру с просьбой или требованием (в случае если у вас
платный хостинг) установить \ активировать модуль mod_rewrite.so.
И еще один совет на последок,
прежде чем вносить изменения в httpd.conf, настоятельно рекомендую сделать его
резервную копию, а то мало ли что.
О том, как применять mod_rewrite в
программировании и создании сайтов читайте в следующей части статьи.
Если у вас есть вопросы или дополнения, или вы просто с чем-то не согласны
пишите мне на gid87@mail.ru и заходите на мой сайт http://www.gid.gorodok.net/