如何在 Apache 2.2 中动态设置 HTTP 标头?

如何在 Apache 2.2 中动态设置 HTTP 标头?

这似乎很简单,但我搞不懂语法。在 Apache 中,我想使用现有请求标头的值来设置新的请求标头。一些简单的非工作代码说明了我想要做的事情:

RequestHeader set X-Custom-Host-Header "%{HTTP_HOST}e" 

理想情况下,这会在请求中创建一个名为“X-Custom-Host-Header”的新 HTTP 标头,其中包含现有 Host 标头的值。但事实并非如此。也许我需要先将现有标头复制到环境变量中?(如果是这样,我也不知道该怎么做。)

我感觉我遗漏了一些明显的东西,但我已经看过 Apache 文档了,但还是搞不清楚。感谢您的帮助。

答案1

in应该是一个环境变量,但是FOOBAR是一个服务器变量。%{FOOBAR}eHTTP_HOST

如果你真的想这么做,你可以尝试:

RewriteRule (.*) $1 [E=custom_host:%{HTTP_HOST}]
RequestHeader set X-Custom-Host-Header "%{custom_host}e"

或者

RewriteCond %{HTTP_HOST} (.*)
RewriteRule (.*) $1 [E=custom_host:%1]
RequestHeader set X-Custom-Host-Header "%{custom_host}e"

或者

SetEnvIf Host (.*) custom_host=$1
RequestHeader set X-Custom-Host-Header "%{custom_host}e"

全部未经测试。

不确定第一个,但第二个和第三个应该可以。

相关内容