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

    Есть в сервере 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 можно использовать и без него)

    Вот и все. Надеюсь, тем, кому (как и мне) нечасто приходится настраивать апач, эта информация окажется полезной
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 4

      0
      OMG. Кэп на хабре.

      как насчет еще пары статей в абзац о том, как использовать другие базовые вещи настройки apache.
        –1
        Блин, а меня минусуют за подобные примитивные топики… По теме — вот (самый популярный мой пост) mrkto.com/mod_rewrite/
          0
          я же говорил :)
          0
          www.egoroff.spb.ru/portfolio/apache/ перевод документации и примеров по mod_rewrite.

          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

          Самое читаемое