httpd-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jeremy Jones <>
Subject [users@httpd] trouble using environment variables in rewriterules
Date Thu, 18 Jun 2009 11:51:01 GMT
I'm trying to set an environment variable in httpd.conf and then have it
available to the URL-portion of a RewriteRule in a .htaccess file. Please
could someone assist:

In httpd.conf I have this line setting the environment variable:

SetEnv       MODPERLPORT      81

and in .htaccess I want to do something like this:

RewriteEngine On
RewriteRule     foo\.cgi
 http://myserver:%{ENV:MODPERLPORT}%{REQUEST_URI}    [P,L]

to have Apache proxy the request through to another Apache process running
on a different port, but it doesn't seem like any environment variables are
available in the URL portion of the rule.

I've also tried to do things like this:

RewriteEngine   On
RewriteCond     %{ENV:MODPERLPORT}      ([0-9]+)
RewriteRule      foo\.cgi
http://myserver:%1%{REQUEST_URI}    [P,L]

but the condition fails, even though the environment variable is set if I
look at a simple dump of the environment e.g. env.cgi through a browser.

So far the only hacky way I can get this to work is to set a built-in
variable to the value I need, e.g.:


ServerAdmin    81


RewriteEngine On
RewriteRule     foo\.cgi
http://myserver:%{SERVER_ADMIN}%{REQUEST_URI}   [P,L]

but that's clearly a very poor solution for many reasons, not least that I
need the modperlport to vary for different environments without the
.htaccess file having to change for each environment.

Can anyone advise if there's a better/correct way to set customised
environment variables and then de-reference them within the URL portion of a
rewrite rule?


View raw message