使用 .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>
我们在这里使用 =~
运算符进行正则表达式匹配,而不是 ==
运算符进行字符串比较。
在网站的特定页面上尝试使用 .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>
我们在这里使用 =~
运算符进行正则表达式匹配,而不是 ==
运算符进行字符串比较。