为什么这个 Apache 2.2 SetEnvIf 指令失败了?

为什么这个 Apache 2.2 SetEnvIf 指令失败了?

我正在尝试解决一个非常烦人的问题,该问题要求我从 .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 文档

我不明白它为什么会失败!

相关内容