2009-09-02 42 views
4

我在.htaccess文件中的以下内容:Apache的SetEnvIf之后麻烦

SetEnvIf Host "^example\.com$" myvar=1 
<IfDefine myvar> 
    RewriteRule ^(.*)$ index2.php?q=$1 [L,QSA] 
</IfDefine> 

据我所知,这应该正常工作。然而,当我访问example.com时,“myvar”似乎没有被定义。我知道我已启用mod_setenvif.c(我已通过< IfModule>块进行验证)。

任何想法为什么“myvar”没有被定义?

回答

6

这实际上是一个ServerFault问题,但无论如何:IfDefine不测试环境变量,它测试在启动时传递给Apache的配置选项。因此,例如,如果运行

apache2 -D MYVAR 

那么部分

<IfDefine MYVAR> 
    ... 
</IfDefine> 

将得到执行。

我不确定是否有任何Apache配置指令充当环境变量的条件,就像您正在寻找的那样。

+0

那么有没有办法用'SetEnvIf'来测试一个变量集合? – 2009-09-02 17:33:15

+0

您可以使用'RewriteCond'来创建一个重写条件,该条件取决于环境变量的值......除此之外,我不确定是否有其他使用环境变量的指令。他们主要是为CGI脚本等。 – 2009-09-03 06:40:25