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

7 http-headers request apache-2.2

看起来这应该很容易,但我无法弄清楚语法。在 Apache 中,我想使用现有请求标头的值来设置新的请求标头。一些简单的非工作代码说明了我想做的事情:

RequestHeader set X-Custom-Host-Header "%{HTTP_HOST}e" 
Run Code Online (Sandbox Code Playgroud)

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

我觉得我遗漏了一些明显的东西,但我已经浏览了 Apache 文档,但我无法弄清楚。谢谢你的帮助。

0x4*_*x44 14

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

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

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

或者

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

或者

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

都未经测试。

不确定第一个,但第二个和第三个应该有效。

  • 第三个选项也对我有用,解释很有意义 - 谢谢 (2认同)