2009-11-23 123 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}