So your first ought work alright. I've just tested the following. On a Red Hat system, I added RequestHeader add X-LocalHeader "Headers For the Win"
to my httpd.conf file.
Then, I put together a quick Python script to dump my environment:
#!/usr/bin/python
import os
print 'Content-type: text/plain'
print
for tup in os.environ.items():
print '%s: %s' % tup
Finally, an Apache restart and a curl
yields the following:
[jeff@marvin ~]$ curl http://localhost/cgi-bin/test.py
HTTP_ACCEPT: */*
HTTP_USER_AGENT: curl/7.19.7
SERVER_NAME: localhost
REMOTE_ADDR: 127.0.0.1
SERVER_PROTOCOL: HTTP/1.1
SCRIPT_FILENAME: /var/www/cgi-bin/test.py
REMOTE_PORT: 42551
SERVER_SOFTWARE: Apache/2.2.13 (Fedora)
SERVER_ADMIN: root@localhost
SCRIPT_NAME: /cgi-bin/test.py
SERVER_SIGNATURE: Apache/2.2.13
REQUEST_METHOD: GET
HTTP_HOST: localhost
SERVER_PORT: 80
GATEWAY_INTERFACE: CGI/1.1
QUERY_STRING:
PATH: /sbin:/usr/sbin:/bin:/usr/bin
REQUEST_URI: /cgi-bin/test.py
HTTP_X_LOCALHEADER: Headers For the Win
SERVER_ADDR: 127.0.0.1
DOCUMENT_ROOT: /var/www/html
As you can see, I have an 'HTTP_X_LOCALHEADER' value set, which corresponds to the header we added earlier. It looks like you had it right, is it still not working?