这似乎很简单,但我搞不懂语法。在 Apache 中,我想使用现有请求标头的值来设置新的请求标头。一些简单的非工作代码说明了我想要做的事情:
RequestHeader set X-Custom-Host-Header "%{HTTP_HOST}e"
理想情况下,这会在请求中创建一个名为“X-Custom-Host-Header”的新 HTTP 标头,其中包含现有 Host 标头的值。但事实并非如此。也许我需要先将现有标头复制到环境变量中?(如果是这样,我也不知道该怎么做。)
我感觉我遗漏了一些明显的东西,但我已经看过 Apache 文档了,但还是搞不清楚。感谢您的帮助。
答案1
in应该是一个环境变量,但是FOOBAR
是一个服务器变量。%{FOOBAR}e
HTTP_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"
全部未经测试。
不确定第一个,但第二个和第三个应该可以。