SetEnv in <Directory>

Hello

I have searched all over the place, but can't find an explanation for
the following.

I am trying to set different environment variables depending on what
what directory the accessed cgi script is in.

/var/www/cgi-bin/live/report.cgi
/var/www/cgi-bin/test/report.cgi

where report.cgi simply is

print $ENV{'USERSOURCE'}

I thought by adding the following to my httpd.conf file and stopping
and then starting /etc/init.d/httpd the scripts would give me
different outputs.

<Directory "/cgi-bin/live/">
SetEnv USERSOURCE live
</Directory>
<Directory "/cgi-bin/test/">
SetEnv USERSOURCE test
</Directory>

However, I can only get the variable set if I use SetEnv OUTSIDE of
the <Directory> tags (and is therefore global). I have run httpd -t to
check the syntax and all that works. Can anyone tell me why you cannot
set specific environment variables based on the directory directive?

Thanks for your help and attention

Mark
markdibley [ Mi, 16 Januar 2008 13:01 ] [ ID #1909553 ]

Re: SetEnv in <Directory>

:-)

Turns out it works if instead I use....

<Location "/cgi-bin/live/">
SetEnv USERSOURCE live
</Location >
<Location "/cgi-bin/test/">
SetEnv USERSOURCE test
</Location >

Thanks anyway

:-)
markdibley [ Mi, 16 Januar 2008 13:24 ] [ ID #1909554 ]

Re: SetEnv in <Directory> (try setenvif too!)

markdibley [at] gmail.com wrote:
> Turns out it works if instead I use....
>
> <Location "/cgi-bin/live/">
> SetEnv USERSOURCE live
> </Location >
> <Location "/cgi-bin/test/">
> SetEnv USERSOURCE test
> </Location >

based on this excerpt from the setenvif directive documentation:
http://httpd.apache.org/docs/2.2/mod/mod_setenvif.html#seten vif

Since version 2.0.51 Apache will recognize occurrences of $1..$9 within
value and replace them by parenthesized subexpressions of regex.

you could probably avoid the hassle of the pre-arranging every possible
"usersource" into a location stanza, and just use a single line like this to
cover all cases:

SetEnvIf Request_URI "/cgi-bin/(.*?)/" USERSOURCE=$1

hth
--sean

--
sean dreilinger - http://durak.org/sean/
sean dreilinger [ Do, 17 Januar 2008 19:01 ] [ ID #1910577 ]
Webserver » alt.apache.configuration » SetEnv in <Directory>

Vorheriges Thema: Apache Virtual Host question
Nächstes Thema: Apache automatic Archive of logs