Это не сработает, потому что mod_rewrite
не расширяет переменные в тестовых шаблонах. Следовательно, ваше выражение будет пытаться соответствовать регулярному выражению ^%{foo}$
, а не ^value_of_foo$
.
Кроме того, в документации для SetEnv
также содержится специальное примечание о порядке обработки по отношению к mod_rewrite
. Это действительно вступает в игру здесь, несмотря на то, что правила применяются позже при обработке запроса, чем сценарий, который они там описывают. Если вы не выполнили перезапись, которая вызывает внутреннее перенаправление, перед проверкой по заданной вами переменной среды, она будет пустой.
Предполагая, что вы установили переменную правильно, потенциальный обходной путь должен сделать это, хотя я чувствую, что она не является надежной:
RewriteCond %{HTTP_HOST}#%{ENV:foo} ^([^#]+)#\1$