Флаги mod_rewrite

Коротко о главном

mod_rewrite – специальный модуль, входящий в состав Apache, позволяющий подменять адреса страниц. Например, «некрасивый» адрес страницы http://вашсайт.ru/showGroup.php?id=blog&subid=programming, можно сделать более «красивым» http:// вашсайт.ru/blog/programming.

Настройки перенаправления делаются в файле .htaccess.

Я не буду здесь подробно описывать, как это работает. В двух словах, включается mod_rewrite командой RewriteEngine On, далее, создаются правила перенаправления, в шаблонах перенаправления используются обычные регулярные выражения:

RewriteRule красивый url настоящий url [флаги]

Например:

RewriteEngine On
RewriteBase /

RewriteRule ^([\w\d\-]+)/([\w\d-]+).html$ group.php?group_id=$1&id=$2 [L,NC,QSA]
RewriteRule ^([\w\d\-]+).html$ show.php?id=$1 [L,NC,QSA]

Здесь, первое правило указывает, что все обращения к адресам типа http://mysite.ru/preved/medved.html обрабатываются страницей http://mysite.ru/group.php, а адреса типа http://mysite.ru/preved.html обрабатываются страницей http://mysite.ru/show.php.

Шаблон регулярного выражения: ([\w\d\-]+) – указывает на то, что в адресе могут быть использованы буквы, цифры и символ тире (-).

Флаги

[R]
Redirect - останавливает процесс преобразования и возвращает результат браузеру клиента как редирект на данную страницу (код 302 - MOVED TEMPORARY), также можно указать код редиректа самостоятельно, например R=301 (код 301 - MOVED PERMANENTLY).
[F]
Forbidden - возвращает ошибку 403.
[G]
Gone - возвращает ошибку 410.
[P]
Proxy - дает команду Apache выполнть подзапрос к указанной странице с использованием программного модуля mod_proxy, при этом пользователь ничего не узнает об этом подзапросе. Если модуль mod_proxy отсутствует, то произойдет ошибка.
[L]
Last - останавливает процесс преобразования, и текущая ссылка считается окончательной.
[N]
Next - запускает процесс преобразования с первого по порядку правила.
[C]
Chain - объединяет несколько правил в цепочку. Если первое правило цепочки не срабатывает, то вся цепочка игнорируется.
[NS]
NoSubreq - разрешает срабатывание правила только для настоящих запросов, игнорируя подзапросы.
[NC]
NoCase - отключает проверку регистра символов.
[QSA]
Qsappend - добавляет исходные параметры запроса (query string) к замене. Если замена не включает в себя новые параметры запроса, то исходные параметры запроса добавляются автоматически. Если же включает, то без флага QSA исходные параметры запроса будут утеряны.
[PT]
PassThrough - останавливает процесс преобразования и передает полученную новую ссылку дальше по цепочке.
[S]
Skip - пропускает следующее правило, если данное правило сработало. Можно указать количество правил, например: S=2
[E]
Env - устанавливает переменную окружения, например: E=переменная:значение.

Флаги указываются в конце каждого правила в квадратных скобках через запятую.

Например:

RewriteRule ^([\w\d\-]+).html$ show.php?id=$1 [L,NC,QSA]
Micro
Author: Micro

///

Поделиться в социальных сетях
0 0 голоса
Рейтинг статьи
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии