Вы наверняка
встречались в сети термин «mod_rewrite».
Для наших читателей, которые никак не вплоть до конца знакомы
с этим модулем веб сервера Apache, но схоже для
тех, кто общий главный однажды об этом слышит –
постараюсь рассказать в этой публикации (в
нескольких частях) подробнее о данном модуле.
Модуль mod_rewrite является программным
модулем веб сервера Apache (обратите внимание,
что он никак не станет выполняться под другими веб
серверами!). Его первичная функция - манипуляция
действий с URL. Модуль весьма универсален также
разносторонен, поэтому мы постараюсь показать
тут множество реальных примеров.
Mod_rewrite является замечательным модулем,
какой предоставляет «основанный на правилах
механизм динамического изменения запрашиваемых
URL-ов». Это истинно мощный орудие, также
поэтому, его знание принципиально важно, ежели вы
хотите стать подлинным веб мастером либо веб
программистом. Не столько принципиально, будете
ли вы использовать его в своей труде, сколько
гордо то, что вы знаете, что он может действовать, также
сможете поведать об этом своему боссу, в какое время
появится хотение сделать что-нибудь странное с
веб сервером.
Однако нужно существовать весьма осторожным также даже
дотошным при труду с этим модулем! Некоторые
ошибки, которые Вы способны допустить, могут
привести к логической петле, причиняя
непрекращающуюся 100%-ую загрузку ценрального
процессора (CPU).
Чтобы никак не казаться пространным в рассуждениях,
приведу некоторые весьма простые примеры.
Прежде, чем мы сможем приступить к труде, Вы
должны будете проверить, установлен ли модуль на
вашем веб сервере либо нет.
Есть несколько способов проверить это:
Спросить вашего системного правителя -
знает ли он (или она) о наличии этого модуля на
веб сервере. Они истинно должны знать, но
как иллюстрирует практика – попадаются также никак не весьма
сведующие сисадмины ... Не напрягайте
других: ежели Вы используете ваш веб сервер с
сотнями других доменов, ваши действия могут
разбудить некоторых спящих собак, поскольку
использование mod_rewrite станет прктически всегда желать за
собой некоторую увеличенную загрузку ценрального
процессора.
Проверить ваш файл конфигурации Apache
(httpd.conf), ежели Вы имеете к нему доступ. Один
из посильных стандартных путей может быть:
/etc/httpd/httpd.conf Однако, ваш
маршрут может очевидно отличаться от этого.
Проверить работу вашего сервера с
нижеприведенными примерами. Если сервер трудится
без ошибок – mod_rewrite истинно
установлен на вашей системе. Если нет, Вы
получите следующее сообщение при запросе всякий
web-страницы с вашего сервера: «Внутренняя
погрешность сервера»
Также, Вы увидите такую запись в файле
«error.log»: «Invalid command
'RewriteEngine', perhaps mis-spelled or defined
by a module not included in the server
configuration».
Теперь давайте копнем поглубже также посмотрим
главный практичный примерчик.
Предположим, что Вы будете использовать
mod_rewrite только для вашего собственного
сайта, то кушать никак не как обобщенную перекрестную
установку сервера.
Для нашего образца потребуется использование
файла .htaccess.
файл .htaccess
Для труда этого метода, Вы должны загрузить
файл под названием «.htaccess» (пожалуйста,
обратите забота на точку в истоке имени
файла!) в папку сервера, с которой Вы будете
работать. Это разрешено сделать чрез telnet либо
ftp. (Предупреждение: .htaccess вынужден существовать
загружен в «режиме ASCII», то кушать никак не в бинарном
режиме!)
Если у Вас уже имеется файл «.htaccess»,
например со следующими записями:
Options Includes +ExecCGI
AddType text/x-server-parsed-html .html
то просто добавьте снизу наш образец кода к
уже существующему (Важно: редактируйте ваш файл
.htaccess в ASCII-редакторе типа Notepad).
Первые две записи запустят самолично модуль:
RewriteEngine on
Options +FollowSymlinks
Рекомендация: запись «RewriteEngine off» отменит все
последующие команды. Это - весьма полезная
особенность: взамен необходимости комментировать
все последующие строки – все, что Вы должны
сделать, это установить «off».
Если ваш системный правитель запрещает
Вам использование «Options +FollowSymlinks», Вы
никак не сможете ограничить использование mod_rewrite
для отдельных каталогов, взамен этого изменения
будут действовать на весь сервер.
Следующая необходимая запись - это:
RewriteBase /
«/» является корневым (основным) URL. Если у
Вас какой-то иной URL, Вы можете указать это в
этой директиве, но «/» – обычно
эквивалентно адресу «http://домен.ру».
А теперь, господа, перейдем к более
занимательным записям!
Предположим, что вы хотите защитить от
несанкционированного доступа ваш файл .htaccess.
На некоторых серверах Вы можете легко произносить
этот файл просто вводя URL следующего формата в
поле адреса вашего браузера:
http://www.domain.com/.htaccess – серьезное
упущение охраны, так как сущность вашего
.htaccess может показать важную информацию об
установках также настройках вашего сайта человеку,
знающему как данные знания применить напротив вас.
Чтобы блокировать этот доступ, запишем
следующее:
RewriteRule .htaccess$ - [F]
Это положение переводится так:
Если кто-то пробует обращаться к файлу
.htaccess, система должна произвести код погрешности
«HTTP response of 403» либо «403 Forbidden - You
don't have permission to access /.htaccess on
this server».
Конструкция .htaccess$ в этом регулярном
выражении означает:
– якорь истока строки $ –
якорь конца строки . – в регулярных
выражениях крапинка «.» означает мета-символ также
должна существовать защищена обратным слэшем
(backslash), ежели Вы все же хотите
использовать именно фактическую точку.
Имя файла должно существовать расположено точно между
начальным также конечным якорем. Это станет
гарантировать то, что только это определенное
имя файла также никакое другое, сгенерирует код
ошибки.
В этом образце, файл ".htaccess" нынче станет
состоять из таких строк:
RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteRule .htaccess$ - [F]
Если мы добавим наш код (в примерах) к
существовавшему ранее файлу «.htaccess», то
получим следующую систему:
Options Includes +ExecCGI
AddType text/x-server-parsed-html .html
RewriteEngine on Options +FollowSymlinks
RewriteBase /
RewriteRule .htaccess$ - [F]
Это введение затрагивает лишь только основы,
требуемые для того, дабы трудиться с модулем
mod_rewrite. Во другой элементы этой обучающей
серии статей постараюсь объяснить использование
различных условий в конфигурировании модуля.