Set header in apache if it doesn't already exist
Solution 1:
In Apache 2.4.7, x86_64, Ubuntu 14.04 LTS
I have found that this works
RequestHeader setIfEmpty X-Forwarded-For "127.0.0.1"
works all day long. However if one tries to use a dynamic value,
RequestHeader setIfEmpty X-Forwarded-For "%{REMOTE_ADDR}e"
does not work. I have found that you need the help of mod_rewrite to harvest the value. My configuration now looks like this, and it works.
RewriteRule . - [E=noxff:%{REMOTE_ADDR}]
RequestHeader setIfEmpty X-Forwarded-For "%{noxff}e"
I know it is stoopid, but it works.
Solution 2:
How about something like:
RequestHeader set X-My-Header "value" expr="req('X-My-Header')==''"
Consult http://httpd.apache.org/docs/current/expr.html for more info about the expr= syntax.
Edit: In Apache 2.2 you should be able to do this:
SetEnvIf X-My-Header "" no_my_header
RequestHeader set X-My-Header "value" env=no_my_header