Mod evhost » History » Revision 21
Revision 20 (heavyhttpd, 2009-01-11 06:10) → Revision 21/23 (stbuehler, 2009-07-12 16:25)
h1. Enhanced Virtual-Hosting
*Module: mod_evhost*
{{>toc}}
h2. Description
mod_evhost builds the document-root based on a pattern which contains
wildcards. Those wildcards can represent parts of the submitted hostname
<pre>
%% => % sign
%0 => domain name + tld
%1 => tld
%2 => domain name without tld
%3 => subdomain 1 name
%4 => subdomain 2 name
%_ => full domain name
</pre>
evhost.path-pattern = "/home/www/servers/%3/pages/"
Note that % patterns in evhost.path-pattern have the special meanings listed above. They do *not* have the same meanings as % substitutions in url.redirect and url.rewrite-*.
h2. Options
evhost.path-pattern
pattern with wildcards to be replace to build a documentroot
h2. Samples
*User vhosts*
<pre>
$HTTP["host"] =~ "users\.example\.org" {
evhost.path-pattern = "/home/%4/public_html/"
}
</pre>
http://johndoe.users.example.org/ => /home/johndoe/public_html/
h2. General Example
<pre>
server.document-root = "/home/user/sites/default/site"
evhost.path-pattern = "/home/user/sites/%0/site/"
</pre>
If example.org is requested, and /home/user/sites/example.org/site/ is found, that path becomes the docroot.
If example.net is requested but no directory named /home/user/sites/example.net/site/ exists, then the docroot remains /home/user/sites/default/site
h2. A Bad Example
<pre>
server.document-root = "/home/user/sites/"
evhost.path-pattern = "/home/user/sites/%0/site/"
</pre>
server.document-root should never point to the directory with your evhost subdirs.
Here's why: Assume foo.example.com and bar.example.com both point to the server.
Assume that /home/user/sites/foo.example.com/site exists, but /home/user/sites/bar.example.com/site does not.
If foo.example.com is configured via mod_auth:
<pre>
$HTTP["host"] == "foo.example.com" {
auth.require = ( "/" => ...
)
}
</pre>
We could bypass the configured auth by accessing http://bar.example.com/foo.example.com/site/