Apache SetEnvIf 无法匹配 Request_Uri

Iva*_*van 5 .htaccess apache-2.2

简单条件,从不匹配并设置变量:

SetEnvIf Request_URI "^/path/to/something*" access_granted
Run Code Online (Sandbox Code Playgroud)

使用 PHP 检查 URI 会给出正确的字符串,但从未设置变量。

echo getenv('Request_URI'); --> /path/to/something
echo getenv('access_granted'); --> <<empty>>
Run Code Online (Sandbox Code Playgroud)

就这么简单,但仍然总是无法匹配。

更新:有趣的一点是,我可以通过字符串实现 access_granted=1:

SetEnvIf Request_URI "^/path/*" access_granted
Run Code Online (Sandbox Code Playgroud)

/path 也是 RewriteBase - 也许它以某种方式连接,我不知道

小智 5

你所面临的问题,因为解释可能是由mod_rewrite的引起 。在应用 setenv 之前应用重写规则,以便将重写的请求 uri 传递给它。尝试在重写时设置 env 变量。


HBr*_*ijn 0

简单的解决方案。 Request_URI不是环境变量的名称,您正在设置一个名为 的变量access_granted