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