Флаги Apache при переадресации RewriteRule
Доброго времени друзья! Практически каждый день я работаю с сайтами и серверами, занимаюсь разработкой, их обслуживанием и администрированием. Одна их часто встречающихся задач, это настройка правил переадресации URL и HTTP запросов, используя модуль RewriteRule для веб-сервера Apache. Настройка осуществляется путем указания директив в файле конфигурации веб-сервера или в файле .htaccess (настройка конфигурации на уровне директорий). Данный пост носит характер заметки, тут я хочу описать перечень флагов, используемых при задании параметров переадресации URL и HTTP запросов.
Пример переадресации
А данном примере представлена настройка переадресации с URL /socket/, запрос на который содержит заголовок Upgrade с параметром websocket, на внутренний сервис по протоколу WS расположенный на порту 8095. При этом, параметры переадресации заданы в виде флагов L и P, что означает: — Последнее правило (остановка текущего цикла) и заставляет URL-адрес подстановки быть внутренне отправленным в качестве прокси-запроса, соответственно.
RewriteEngine On
RewriteCond %{HTTP:Upgrade} =websocket [NC]
RewriteRule /socket/ ws://127.0.0.1:8095 [P,L] |
Перечень флагов
F (Forbidden) – Запрет доступа, возвращает браузеру клиента ответ 403 FORBIDDEN
NC (nocase) – Выполнять сравнение без учёта регистра
R (redirect) – Выполнить редирект (перенаправление)
L (last) – Последнее правило (остановка текущего цикла)
END – Немедленная остановка процесса перезаписи
H (handler) – Отправка результирующего URI указанному Content-handler для обработки
C (chain) – Составление цепи из правил
N (next) – Перезапуск процесс перезаписи начиная с первого правила
QSA (qsappend) – Добавить строку запроса из исходного URL к строке запроса, созданной правилами перезаписи
QSD (qsdiscard) – Отбросить любую строку запроса из входящего URI
QSL (qslast) – Сделать разделителем строки самый правый знак вопроса
NE (noescape) – Не экранировать специальные символы в результатах
NS (nosubreq) – Пропуск правила, если текущий запрос является внутренним подзапросом
S (skip) – Пропустить следующее количество правил, если сработало текущее правило
T (type) – Принудительная установка MIME-типа целевого файла на указанный тип
B (экранировать обратные ссылки) – Экранировать не-буквенно-цифровые символы в обратных ссылках перед применения трансформации
BNP (backrefnoplus) (не экранировать пробелы на +) – Если обратные ссылки будут экранированы, пробелы должны быть экранированы в %20 вместо +
CO (cookie) – Устанавливает куки в клиентский браузер
DPI (discardpath) – Приводит к отбрасыванию части PATH_INFO переписанного URI
E (env) – Устанавливает или удаляет значение переменной окружения
G (gone) – Возвращает клиентскому браузеру ответ 410 GONE
P (proxy) – Заставляет URL-адрес подстановки быть внутренне отправленным в качестве прокси-запроса
PT (passthrough) – Заставляет результирующий URI быть переданным обратно в механизм сопоставления URL-адресов для обработки другими URI-на-имя_файла трансляторами, таких как Alias или Redirect

Автор:






