Apache SetEnvIf麻烦

Dav*_*ong 4 apache environment-variables setenv

我的.htaccess文件中有以下内容:

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

据我所知,这应该是正常的.但是,当我访问时,"myvar"似乎没有被定义example.com.我知道我已mod_setenvif.c启用(我已使用<IfModule>块验证).

任何想法为什么"myvar"没有得到定义?

Dav*_*d Z 6

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

apache2 -D MYVAR
Run Code Online (Sandbox Code Playgroud)

然后一节

<IfDefine MYVAR>
    ...
</IfDefine>
Run Code Online (Sandbox Code Playgroud)

会被执行.

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