Как стать автором
Обновить

mod_rewrite и пользовательские переменные окружения

Время на прочтение 1 мин
Количество просмотров 1.6K
Есть в сервере Apache модуль mod_env, с его помощью можно задавать пользовательские переменные окружения:

SetEnv foo bar

Мне нужно было использовать такую пользовательскую переменную окружения в директиве RewriteCond модуля mod_rewrite. Оказалось, однако, что переменные, заданные с помощью SetEnv — в mod_rewrite недоступны :(. Увы!

Что же делать? Решение очень просто. С помощью вот такого нехитрого правила можно задать переменную окружения, которой mod_rewrite сможет потом воспользоваться:

RewriteRule .* - [E=foo:bar]

Перенаправления не происходит, мы просто задаем переменную окружения foo со значением bar (A dash indicates that no substitution should be performed (the existing path is passed through untouched) — httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriterule).

Далее этой переменной можно воспользоваться:

RewriteCond %{ENV:foo} bar # следующее правило будет применено только если переменная foo имеет значение bar.

(обратите внимание на префикс ENV: насколько я понимаю, он обязателен для использования своих переменных окружения, тогда как стандартные, типа QUERY_STRING можно использовать и без него)

Вот и все. Надеюсь, тем, кому (как и мне) нечасто приходится настраивать апач, эта информация окажется полезной
Теги:
Хабы:
+6
Комментарии 4
Комментарии Комментарии 4

Публикации

Истории

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн
PG Bootcamp 2024
Дата 16 апреля
Время 09:30 – 21:00
Место
Минск Онлайн
EvaConf 2024
Дата 16 апреля
Время 11:00 – 16:00
Место
Москва Онлайн