Перезапись URL Шпаргалка

Регулярные выражения
^ Начало строки
$ Конец строки
. Любой одиночный символ
(a|b) «a» или «b»
(…) Группа
[abc] «a» или «b» или «c»
[^abc] Не «a», не «b» и не «c»
\s Пробел
a? 0 или 1 символ «a»
a* 0 или больше «a»
a*? 0 или больше «a», нежадный
a+ 1 или больше «a»
a+? 1 или больше «a», нежадный
a{3} Ровно 3 «a»
a{3,} 3 или больше «a»
a{3,6} От 3 до 6 «a»
a{3,6}? От 3 до 6 «a», нежадный
!(…) Префикс «НЕ», отрицание
Флаги RewriteRule
R[=код] Редирект, возможно с кодом
F Доступ запрещен
G «Мертвая страница», удалена
P Прокси
L Последнее правило
N Следующий круг (перезапуск правил)
C Не «a», не «b» и не «c»
T=тип Установить MIME тип
NS Пропустить внутренний подзапрос
NC Не учитывать регистр
QSA Добавить строку запроса
NE Не экранировать при выходе
PT Пропустить через следующий
S=x Пропустить следующие x правил
E=var:val Установить переменную окружения
Флаги RewriteCond
NC Не учитывать регистр
OR Комбинировать по принципу «ИЛИ»
Коды перенаправления
301 Перенесен постоянно
302 Перенесен временно
403 Доступ запрещен
404 Страница не найдена
410 «Мертвая страница», удалена
Пример: новый домен
# Перенаправление с domain.com на domain2.com
RewriteCond %{HTTP_HOST} ^www\.domain.com$ [NC]
RewriteRule ^(.*) http://domain2.com/$1 [R=301,L]
Пример: страница временно перенесена
# Перенаправление с domain.com/page.html на domain.com/new_page.html
RewriteRule ^page.html$ new_page.html [R,NC,L]
Пример: человеко-понятные URL (без строки запроса)
# Перенаправление с domain.com/category/ на domain.com/categories.php?name=category
RewriteRule ^([A-Za-z0-9-]|+)?$ categories.php?name=$1 [L]
Пример: блокировать спам
# Блокировать, если URL содержит «viagra» или «xxx»
RewriteCond %{HTTP_REFERER} (viagra) [NC,OR]
RewriteCond %{HTTP_REFERER} (xxx) [NC]
RewriteRule .* — [F]
Переменные: запрос
%{REMOTE_ADDR}
%{REMOTE_HOST}
%{REMOTE_USER}
%{REMOTE_IDENT}
%{REQUEST_METHOD}
%{SCRIPT_FILENAME}
%{PATH_INFO}
%{QUERY_STRING}
%{AUTH_TYPE}
Переменные: сервер
%{DOCUMENT_ROOT}
%{SERVER_ADMIN}
%{SERVER_NAME}
%{SERVER_ADDR}
%{SERVER_PORT}
%{SERVER_PROTOCOL}
%{SERVER_SOFTWARE}
Директивы
RewriteEngine
RewriteOptions
RewriteLog
RewriteLogLevel
RewriteLock
RewriteMap
RewriteBase
RewriteCond
RewriteRule
Переменные: HTTP-заголовки
%{HTTP_USER_AGENT}
%{HTTP_REFERER}
%{HTTP_COOKIE}
%{HTTP_FORWARDED}
%{HTTP_HOST}
%{HTTP_PROXY_CONNECTION}
%{HTTP_ACCEPT}
Переменные: время
%{TIME_YEAR}
%{TIME_MON}
%{TIME_DAY}
%{TIME_HOUR}
%{TIME_MIN}
%{TIME_SEC}
%{TIME_WDAY}
%{TIME}
Переменные: специальные
%{API_VERSION}
%{THE_REQUEST}
%{REQUEST_URI}
%{REQUEST_FILENAME}
%{IS_SUBREQ}