我需要这样的东西:
SetEnv foo bar.baz
RewriteEngine On
RewriteCond %{HTTP_HOST} ^%{foo}$
RewriteRule ^(.*)$ http://www.foo/$1 [L]
UPD:
我做了如下:
SetEnv HOSTNAME_ENV testsite
RewriteEngine On
RewriteCond %{HTTP_HOST} ^%{ENV:HOSTNAME_ENV}
RewriteRule ^(.*)$ http://www.%{ENV:HOSTNAME_ENV}/$1 [L,R=301]
但这不起作用。 %{ENV:HOSTNAME_ENV} 未定义。
这行不通,因为mod_rewrite
不扩展测试模式中的变量。因此,您的表达式将尝试匹配正则表达式^%{foo}$
, not ^value_of_foo$
.
此外,文档SetEnv还特别注意了与以下内容相关的处理顺序mod_rewrite
。这实际上确实在这里发挥了作用,尽管规则在请求处理中应用的时间比他们在那里描述的场景要晚。如果在针对您设置的环境变量进行测试之前不执行导致内部重定向的重写,则该变量将为空。
假设您正确设置了变量,一个潜在的解决方法是这样做,尽管我觉得这并不是万无一失的:
RewriteCond %{HTTP_HOST}#%{ENV:foo} ^([^#]+)#\1$
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)