2009-11-23 124 views
7

是否有任何使用RewriteRule语句中的SetEnv中设置的值?mod_rewrite规则和setenv

实施例:

SetEnv MY_SCRIPT myScript.php 

rewriteEngine on 
RewriteRule ^(.*)$ %{MY_SCRIPT} [L] 

回答

7

根据http://httpd.apache.org/docs/2.0/env.html,SetEnv在之后被称为RewriteRule。因此,在RewriteRule-或RewriteCond-语句中使用通过SetEnv设置的变量似乎是不可能的。

另一方面使用SetEnvIf在之前被称为RewriteRule因此可以在RewriteRule-或RewriteCond-语句中使用Variables set。

所以像下面应该工作:

SetEnvIf SERVER_PROTOCOL "HTTP.*" MY_SCRIPT=myScript.php 
rewriteEngine on 
RewriteRule ^(.*)$ %{ENV:MY_SCRIPT} [L] 
1

%{ENV:MY_SCRIPT}使用代替%{MY_SCRIPT}