使用 .htaccess 在特定页面上设置 header

Set header on a specific page with .htaccess

在网站的特定页面上尝试使用 .htaccess 设置 header。

我尝试了各种方法来设置 header,但其中 none 导致在响应中设置 header。

方法一:

SetEnvIf Request_URI ^\/glossary\/$ glossary
Header Set Test-Header "success" env=glossary

我还尝试了一个更简单的版本,我尝试在 Request_URI

的任何部分匹配 'glossary'
SetEnvIf Request_URI glossary glossary
Header Set Test-Header "success" env=glossary

方法二:

<If "%{REQUEST_URI} == '/glossary/'">
    Header Set Test-Header "success"
</If>

方法三:

RewriteEngine On
RewriteCond %{REQUEST_URI} ^\/glossary\/
RewriteRule ^ - [ENV=GLOSSARY]
Header Set Test-Header "success" env=GLOSSARY

我还在 header 中输出了 Request_URI 以确认 Request_URI 有一个值:

Header set Test-Output-Request_URI "%{Request_URI}e"

这导致设置 Header,正如预期的那样:

Test-Output-Request_URI: /glossary/

我不是 .htaccess 方面的专家,也不是正则表达式方面的专家,但通常我能够立即找到解决方案。不过这次不是。根据我的阅读,似乎所有这些方法都应该有效,但我显然遗漏了一些东西。

这是 Apache 2.4.35

不确定这是否有影响,但这是一个 WordPress 网站。

这应该适用于 Apache 2.4+

<If "%{THE_REQUEST} =~ m#/glossary#">
    Header Set Test-Header "success"
</If>

我们在这里使用 =~ 运算符进行正则表达式匹配,而不是 == 运算符进行字符串比较。