![为什么这个 Apache 2.2 SetEnvIf 指令失败了?](https://linux22.com/image/735991/%E4%B8%BA%E4%BB%80%E4%B9%88%E8%BF%99%E4%B8%AA%20Apache%202.2%20SetEnvIf%20%E6%8C%87%E4%BB%A4%E5%A4%B1%E8%B4%A5%E4%BA%86%EF%BC%9F.png)
我正在尝试解决一个非常烦人的问题,该问题要求我从 .htaccess 文件设置标头,但仅针对特定的 URL。
为了测试这个概念,我在 .htaccess 文件中制定了以下规则:
SetEnv REFERRER_POLICY "no-cats"
SetEnvIf Request_URI ^/sales/referral$ CHIMP_POLICY=eat-bananas
Header set Cat-policy %{Request_URI}e
Header set Dog-policy %{REFERRER_POLICY}e
Header set Chimp-policy %{CHIMP_POLICY}e env=CHIMP_POLICY
Header set Human-policy %{CHIMP_POLICY}e
当我访问https://example.com/sales/referral,我看到以下标题:
Cat-policy: /sales/referral
Dog-policy: no-cats
Human-policy: (null)
显然 CHIMP_POLICY 没有被设置,但正如 Cat-policy 标头所示,Request_URI 确实包含与 SetEnvIf 中使用的正则表达式完全匹配的字符串,并且 SetEnvIf 中使用的语法与Apache 2.2 文档
我不明白它为什么会失败!