Настройки .htaccess

10:44 10.03.2017
Директива RewriteEngine:
Директива RewriteEngine (модуль mod_rewrite) включает (On) или отключает (Off) преобразование URL. По умолчанию Off. Пример (включение):
RewriteEngineOn

Директива RewriteCond:
Данная директива устанавливает условие, при котором работает правило: RewriteRule. Директива RewriteCond может быть одна или несколько штук.
-d - проверка, является ли файл каталогом.
-f - проверка, является ли файл файлом.
-s - проверка, является ли файл файлом, проверка размера файла, не должно быть равно нолю.
-l - проверка, является ли путь символической ссылкой.
Пример RewriteRule:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

Данное условие говорит о том, что правило RewriteRule будет выполнено только в том случаи, если нет файла или каталога.

Спецсимволы регулярных выражений:
# - (решетка) - комментарий.
() - (круглые скобки) - выделение группы символов.
[] - (квадратные скобки) - ряд допускаемых символов.
? - (знак вопроса) - повторяется ноль или один раз.
^ - (знак вставки) - определяет начало строки.
$ - (знак доллара) - определяет конец строки.
| - (вертикальная черта) - или.
. - (точка) - обозначает любой символ.
* - (звездочка) - повторяется ноль или неограниченное число раз.
+ - (плюс) - повторяется один или неограниченное число раз.
! -(восклицательный знак) - знак отрицания.
\ - (обратный слеш) - экранирование. Символ "идущий" после обратного слеша, будет учитывать, как обычный символ.
Пример работы регулярного выражения (замена index.php на home):
RewriteRule ^home$/index.php [L]

Флаги:
[R] - внешний редирект (код 302 - MOVED TEMPORARY). Задать код редиректа можно самому (пример: [R=301]).
[QSA] - добавляет исходные параметры запроса ($_GET) к заменяемому URL. Если не указывать данный флаг параметры будут потеряны.
[NC] - регистронезависимость (INDEX или index - будет одно и тоже).
[L] - остановка преобразования URL, следующие преобразования выполняться не будут.
[F] - доступ запрещен (ошибка 403).
[G] - ошибка 410.
Для одной замены можно указать несколько флагов, через запятую. Пример:
RewriteRule ^post(.*)\.html$ /blog.php?mode=read&art=$1 [QSA,L,NC]

Переменные:
Переменные пишутся в фигурных скобках, после знака процента, например: %{REQUEST_URI}.
REQUEST_URI - адрес, без имени сайта.
QUERY_STRING - GET параметры.
REQUEST_FILENAME - полный адрес к каталогу, файлу или скрипту.

Читайте ещё:
Как заблокировать IP адрес пользователя в .htaccess