mod_rewrite规则和setenv

时间:2009-11-23 20:10:32

标签: mod-rewrite setenv

是否仍然使用SetEnv声明中RewriteRule设置的值?

示例:

SetEnv MY_SCRIPT myScript.php

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

2 个答案:

答案 0 :(得分:9)

根据http://httpd.apache.org/docs/2.0/env.html,SetEnv在重写规则后被称为 。因此,似乎无法在RewriteRule-或RewriteCond语句中使用通过SetEnv设置的任何变量。

另一方面,使用SetEnvIf称为之前 RewriteRule,因此设置的变量可以在RewriteRule-或RewriteCond语句中使用。

所以类似下面的内容应该有效:

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

答案 1 :(得分:1)

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