Флаги Apache при переадресации RewriteRule

Author Автор: Роман Чернышов    Опубликовано: 2 января 2025

Доброго времени друзья! Практически каждый день я работаю с сайтами и серверами, занимаюсь разработкой, их обслуживанием и администрированием. Одна их часто встречающихся задач, это настройка правил переадресации 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

Оставить комментарий

Автор блога
Роман Чернышов
Веб-разработчик,
Full Stack
Senior, Architect
PHP, JavaScript, Node.JS, Python, HTML 5, CSS 3, MySQL, Bash, Linux Admin
Заказать работу
предложить оффер

Моя книга
Книга. Веб-разработчик. Легкий вход в профессию
Печатная книга
Веб-разработчик.
Легкий вход в профессию
Купить за 359₽
Популярные записи
Последние вопросы
Список вопросов
Последние комментарии
Меню

Archive

Мои проекты
Insurance CMS Love Crm CMS Совместные покупки Мой PHP Framework Хостинг для моих клиентов Лицензии на мой софт и поддержка