Рейтинг блогов

Флаги mod_rewrite

дата добавления: 14 сентября 2008 / 11:52, просмотров: 16122, комментариев: 1

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

mod_rewrite – специальный модуль, входящий в состав Apache, позволяющий подменять адреса страниц. Например, «некрасивый» адрес страницы http://aleksey.nemiro.ru/showGroup.php?id=blog&subid=programming, можно сделать более «красивым» http://aleksey.nemiro.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]

Комментарии (всего: 1)

Добавить комментарий rss
Автор: Александр Денисюк @ 19 марта 2017, 18:33   ·   ссылка
Пишу спустя 9 лет после создания этого поста. Эта информация до сих пор актуальна для PHP-разработчиков, спасибо! С помощью этих знаний мне удалось решить свои задачи по настройке .htaccess Также я позаимствовал вашу таблицу в свой пост на блоге: https://denisyuk.by/all/htaccess-rewriterule/

Добавить комментарий

Добавлять комментарии могут только зарегистрированные пользователи сайта.
Если у Вас уже есть учётная запись на этом сайте, пройдите процудуру авторизации.
В противном случае, зарегистрируйтесь на сайте.