On 9/7/06, Norman Khine <[EMAIL PROTECTED]> wrote:


[1] <VirtualHost *:80>

[2]    ServerName  domain.tld
[3]    RewriteEngine on
[4]    RewriteCond   %{*HTTP_HOST*}    *[^.]+*\.domain\.tld$
[5]    RewriteRule   ^(.+)             %{HTTP_HOST}$1                        [C]
[6]    RewriteRule   *([^.]+)*\.domain\.tld(.*) http://localhost:9080/*$1*$2 [P]

[7]    RequestHeader set X-Base-Path %{*HTTP_HOST*}

[8]    ErrorLog       /var/log/apache2/all-error_log
[9]    CustomLog      /var/log/apache2/all-access_log common

[0] </VirtualHost>


I don't understand line [2], as the server gets the request 
http://folder.domain.tld as this points to an A record IP address Apache will 
return the default page and it stops, how do I inject the %{*HTTP_HOST*} value 
or is there some magic I am missing and don't see?

Assuming that there is, Apache then switches the RewriteEngine on [3] and takes 
everything before domain.tld - what is the meaning of [^.]+ ? then the [C] 
means continue to the next RewriteRule which in my case needs to rewrite to an 
internal server and Proxy this i.e. [P], but this does not work for me either 
;'(

Line [7] I need to set the X-Base-Path to the folder name.

I would like to avoid using vhost.map or any scripting but I am open to 
suggestions if there is no other way ;)

By the way, I don't have the www.'folder'.domain.tld in my URL - maybe this is 
the problem, but don't see why?

I don't understand that last line.  But here is something that should be closer:
<VirtualHost *:80>
ServerName  domain.tld
ServerAlias *.domain.tld
RewriteEngine on
RewriteCond   %{HTTP_HOST}    ^([a-zA-Z_]+\.domain\.tld)$
RewriteRule (.+) http://localhost:9080/%1$1 [P,E=THEHOST:%1]

RequestHeader set X-Base-Path %{THEHOST}e
ErrorLog       /var/log/apache2/all-error_log
CustomLog      /var/log/apache2/all-access_log common
</VirtualHost>

I don't know if this will work, but it is closer than what you have.
A few notes:
1. My regex matching the HOST is more strict to avoid clients playing
funny games with their host header and causing security problems.  It
accepts only hostnames containing letters and the underscore
character.
2. In the RewriteRule %1 matches the regex from the RewriteCond and $1
matches the regex from the RewriteRule.
3. The funky stuff with THEHOST is necessary because the RequestHeader
directive cannot access mod_rewrite variables.  So I instead have
mod_rewrite shove HTTP_HOST in an environment variable.

One more note: I'm not actually sure whether RequestHeader can use env
variables at all.  You'd need to check the code to be sure.

Joshua.

---------------------------------------------------------------------
The official User-To-User support forum of the Apache HTTP Server Project.
See <URL:http://httpd.apache.org/userslist.html> for more info.
To unsubscribe, e-mail: [EMAIL PROTECTED]
  "   from the digest: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to