<?xml version="1.0"?>
<!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
<?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?>
<!-- $LastChangedRevision$ -->

<!--
 Copyright 2002-2005 The Apache Software Foundation or its licensors, as
 applicable.

 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-->

<modulesynopsis metafile="mod_vhost_alias.xml.meta">

<name>mod_vhost_alias</name>
<description>Provides for dynamically configured mass virtual
hosting</description>
<status>Extension</status>
<sourcefile>mod_vhost_alias.c</sourcefile>
<identifier>vhost_alias_module</identifier>

<summary>
    <p>This module creates dynamically configured virtual hosts, by
    allowing the IP address and/or the <code>Host:</code> header of
    the HTTP request to be used as part of the pathname to
    determine what files to serve. This allows for easy use of a
    huge number of virtual hosts with similar configurations.</p>
    
    <note><title>Note</title>
      <p>If <module>mod_alias</module> or <module>mod_userdir</module> are
      used for translating URIs to filenames, they will override the
      directives of <module>mod_vhost_alias</module> described below. For
      example, the following configuration will map <code>
      /cgi-bin/script.pl</code> to <code>
      /usr/local/apache2/cgi-bin/script.pl</code> in all cases:</p>

      <example>
        ScriptAlias /cgi-bin/ /usr/local/apache2/cgi-bin/<br />
        VirtualScriptAlias /never/found/%0/cgi-bin/
      </example>
    </note>
</summary>

<seealso><directive module="core">UseCanonicalName</directive></seealso>
<seealso><a href="../vhosts/mass.html">Dynamically configured mass 
    virtual hosting</a></seealso>

<section id="interpol">
    <title>Directory Name Interpolation</title>

    <p>All the directives in this module interpolate a string into
    a pathname. The interpolated string (henceforth called the
    "name") may be either the server name (see the <directive
    module="core">UseCanonicalName</directive>
    directive for details on how this is determined) or the IP
    address of the virtual host on the server in dotted-quad
    format. The interpolation is controlled by specifiers inspired
    by <code>printf</code> which have a number of formats:</p>

<table>
<columnspec><column width=".2"/><column width=".6"/></columnspec>
<tr><td><code>%%</code></td>
<td>insert a <code>%</code></td></tr>

<tr><td><code>%p</code></td>
<td>insert the port number of the virtual host</td></tr>

<tr><td><code>%N.M</code></td>
<td>insert (part of) the name</td></tr>
     
</table>

    <p><code>N</code> and <code>M</code> are used to specify
    substrings of the name. <code>N</code> selects from the
    dot-separated components of the name, and <code>M</code>
    selects characters within whatever <code>N</code> has selected.
    <code>M</code> is optional and defaults to zero if it isn't
    present; the dot must be present if and only if <code>M</code>
    is present. The interpretation is as follows:</p>

    <table>
      <columnspec><column width=".1"/><column width=".4"/></columnspec>
      <tr><td><code>0</code></td>
      <td>the whole name</td></tr>

      <tr><td><code>1</code></td>
      <td>the first part</td></tr>

      <tr><td><code>2</code></td>
      <td>the second part</td></tr>

      <tr><td><code>-1</code></td>
      <td>the last part</td></tr>

      <tr><td><code>-2</code></td>
      <td>the penultimate part</td></tr>

      <tr><td><code>2+</code></td>
      <td>the second and all subsequent parts</td></tr>

      <tr><td><code>-2+</code></td>
      <td>the penultimate and all preceding parts</td></tr>

      <tr><td><code>1+</code> and <code>-1+</code></td>
      <td>the same as <code>0</code></td></tr>
    </table>

    <p>If <code>N</code> or <code>M</code> is greater than the number
    of parts available a single underscore is interpolated. </p>

</section>

<section id="examples">
    <title>Examples</title>

    <p>For simple name-based virtual hosts you might use the
    following directives in your server configuration file:</p>

    <example>
      UseCanonicalName    Off<br />
      VirtualDocumentRoot /usr/local/apache/vhosts/%0
    </example>

    <p>A request for
    <code>http://www.example.com/directory/file.html</code> will be
    satisfied by the file
    <code>/usr/local/apache/vhosts/www.example.com/directory/file.html</code>.
    </p> 

    <p>For a very large number of virtual hosts it is a good idea
    to arrange the files to reduce the size of the
    <code>vhosts</code> directory. To do this you might use the
    following in your configuration file:</p>

    <example>
      UseCanonicalName    Off<br />
      VirtualDocumentRoot /usr/local/apache/vhosts/%3+/%2.1/%2.2/%2.3/%2
    </example>

    <p>A request for
    <code>http://www.domain.example.com/directory/file.html</code>
    will be satisfied by the file
    <code>/usr/local/apache/vhosts/example.com/d/o/m/domain/directory/file.html</code>.</p>

    <p>A more even spread of files can be achieved by hashing from the
    end of the name, for example: </p>

<example>
    VirtualDocumentRoot /usr/local/apache/vhosts/%3+/%2.-1/%2.-2/%2.-3/%2
</example>

    <p>The example request would come from
    <code>/usr/local/apache/vhosts/example.com/n/i/a/domain/directory/file.html</code>.</p>

    <p>Alternatively you might use: </p>

<example>
    VirtualDocumentRoot /usr/local/apache/vhosts/%3+/%2.1/%2.2/%2.3/%2.4+
</example>

    <p>The example request would come from
    <code>/usr/local/apache/vhosts/example.com/d/o/m/ain/directory/file.html</code>.</p>

    <p>For IP-based virtual hosting you might use the following in
    your configuration file:</p>

    <example>
      UseCanonicalName DNS<br />
      VirtualDocumentRootIP /usr/local/apache/vhosts/%1/%2/%3/%4/docs<br />
      VirtualScriptAliasIP  /usr/local/apache/vhosts/%1/%2/%3/%4/cgi-bin
    </example>

    <p>A request for
    <code>http://www.domain.example.com/directory/file.html</code>
    would be satisfied by the file
    <code>/usr/local/apache/vhosts/10/20/30/40/docs/directory/file.html</code>
    if the IP address of <code>www.domain.example.com</code> were
    10.20.30.40. A request for
    <code>http://www.domain.example.com/cgi-bin/script.pl</code> would
    be satisfied by executing the program
    <code>/usr/local/apache/vhosts/10/20/30/40/cgi-bin/script.pl</code>.</p>

    <p>If you want to include the <code>.</code> character in a
    <code>VirtualDocumentRoot</code> directive, but it clashes with
    a <code>%</code> directive, you can work around the problem in
    the following way:</p>

<example>
    VirtualDocumentRoot /usr/local/apache/vhosts/%2.0.%3.0
</example>

    <p>A request for
    <code>http://www.domain.example.com/directory/file.html</code>
    will be satisfied by the file
    <code>/usr/local/apache/vhosts/domain.example/directory/file.html</code>.</p>
     
    <p>The <directive module="mod_log_config">LogFormat</directive>
    directives <code>%V</code> and <code>%A</code> are useful
    in conjunction with this module.</p>
</section>

<directivesynopsis>
<name>VirtualDocumentRoot</name>
<description>Dynamically configure the location of the document root
for a given virtual host</description>
<syntax>VirtualDocumentRoot <em>interpolated-directory</em>|none</syntax>
<default>VirtualDocumentRoot none</default>
<contextlist>
<context>server config</context>
<context>virtual host</context>
</contextlist>

<usage>

    <p>The <directive>VirtualDocumentRoot</directive> directive allows you to
    determine where Apache will find your documents based on the
    value of the server name. The result of expanding
    <em>interpolated-directory</em> is used as the root of the
    document tree in a similar manner to the <directive
    module="core">DocumentRoot</directive> directive's argument. 
    If <em>interpolated-directory</em> is <code>none</code> then
    <directive>VirtualDocumentRoot</directive> is turned off. This directive 
    cannot be used in the same context as <directive
    module="mod_vhost_alias">VirtualDocumentRootIP</directive>.</p>

</usage>
</directivesynopsis>

<directivesynopsis>
<name>VirtualDocumentRootIP</name>
<description>Dynamically configure the location of the document root
for a given virtual host</description>
<syntax>VirtualDocumentRootIP <em>interpolated-directory</em>|none</syntax>
<default>VirtualDocumentRootIP none</default>
<contextlist>
<context>server config</context>
<context>virtual host</context>
</contextlist>

<usage>

<p>The <directive>VirtualDocumentRootIP</directive> directive is like the
    <directive module="mod_vhost_alias">VirtualDocumentRoot</directive>
    directive, except that it uses the IP address of the server end
    of the connection for directory interpolation instead of the server
    name.</p>
</usage>
</directivesynopsis>

<directivesynopsis>
<name>VirtualScriptAlias</name>
<description>Dynamically configure the location of the CGI directory for
a given virtual host</description>
<syntax>VirtualScriptAlias <em>interpolated-directory</em>|none</syntax>
<default>VirtualScriptAlias none</default>
<contextlist>
<context>server config</context>
<context>virtual host</context>
</contextlist>

<usage>

    <p>The <directive>VirtualScriptAlias</directive> directive allows you to
    determine where Apache will find CGI scripts in a similar
    manner to <directive module="mod_vhost_alias"
    >VirtualDocumentRoot</directive> does for other documents. It matches
    requests for URIs starting <code>/cgi-bin/</code>, much like <directive
    module="mod_alias">ScriptAlias</directive>
    <code>/cgi-bin/</code> would.</p>

</usage>
</directivesynopsis>

<directivesynopsis>
<name>VirtualScriptAliasIP</name>
<description>Dynamically configure the location of the cgi directory for
a given virtual host</description>
<syntax>VirtualScriptAliasIP <em>interpolated-directory</em>|none</syntax>
<default>VirtualScriptAliasIP none</default>
<contextlist>
<context>server config</context>
<context>virtual host</context>
</contextlist>

<usage>

    <p>The <directive>VirtualScriptAliasIP</directive> directive is like the
    <directive module="mod_vhost_alias">VirtualScriptAlias</directive>
    directive, except that it uses the IP address of the server end
    of the connection for directory interpolation instead of the server
    name.</p>

    </usage>

</directivesynopsis>
</modulesynopsis>

