How to dynamically set HTTP Header in Apache 2.2?
The FOOBAR
in %{FOOBAR}e
should be an environment variable, but HTTP_HOST
is a server variable.
If you really want to do that, you may try:
RewriteRule (.*) $1 [E=custom_host:%{HTTP_HOST}]
RequestHeader set X-Custom-Host-Header "%{custom_host}e"
or
RewriteCond %{HTTP_HOST} (.*)
RewriteRule (.*) $1 [E=custom_host:%1]
RequestHeader set X-Custom-Host-Header "%{custom_host}e"
or
SetEnvIf Host (.*) custom_host=$1
RequestHeader set X-Custom-Host-Header "%{custom_host}e"
All untested.
Not sure of the first one, but the second and third one should work.
Related videos on Youtube
Deb
She/Her, DevOps & Systems Engineering. I do monitoring and telemetry. I read manuals. Also: author of Software Telemetry so I guess I write them too now.
Updated on September 17, 2022Comments
-
Deb almost 2 years
Seems like this should be easy, but I cannot figure out the syntax. In Apache, I want to use the value of an existing request header to set a new request header. Some simple non-working code that illustrates what I'd like to do:
RequestHeader set X-Custom-Host-Header "%{HTTP_HOST}e"
Ideally, this would make a new HTTP header in the request called "X-Custom-Host-Header" that contains the value of the existing Host header. But it does not. Perhaps I need to copy the existing header into an environment variable first? (If so, I can't figure out how to do that either.)
I feel like I'm missing something obvious, but I've gone over the Apache docs and I can't figure it out. Thanks for any help.
-
Lauri Lehtinen about 13 yearsI tried all of these, none of them worked. The header is not being set.
-
jo pizzamaker about 13 yearsI tried the third form, and also set a response header. The response header was set properly.
-
jo pizzamaker about 13 yearsThird form worked for on getting the request header, too.
-
stephen mulcahy about 13 yearsThe 3rd option also worked for me and the explanation makes sense - thanks