mod_rewrite:环境variables不会在RewriteConds中扩展

我有一个.htaccessRewriteCond类似于:

 RewriteCond "%{ENV:FOO}" =bar 

${ENV:FOO}正在扩展到FOO的值,它总是空白的。

例如,如果我在RewriteCond之前设置了SetEnv FOO "bar" ,然后启动RewriteLogLevel ,我在我的重写日志中得到这个:

 RewriteCond: input='' pattern='=bar' => not-matched 

我在这里做错了什么? 如何使RewriteCond内部的环境variables扩展?

另外,如果我像RewriteRule .* %{ENV:FOO}那样添加一个愚蠢的RewriteRule ,我可以在重写日志中看到variables正在被正确地展开。

我的Apache版本是2.2.17。

编辑 :我发现这个问题的另一个参考 。 看起来像一个“解决scheme”是使用SetEnvIf而不是SetEnv … = \

此外,它似乎不像SetEnv的位置有任何影响。 我已经把它放在httpd.conf和.htaccess ,都没有工作。

啊,我们走了。 从SetEnv文档 (在“警告”下):

SetEnv指令在请求处理期间延迟运行,这意味着像SetEnvIf和RewriteCond这样的指令将看不到用它设置的variables。

所以,现在,我想我正在使用:

 SetEnvIf _ .* FOO=bar