home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 November / CMCD1104.ISO / Software / Complet / Apache / apache_2.0.52-win32-x86-no_ssl.msi / Data.Cab / F278387_mod_vhost_alias.xml < prev    next >
Extensible Markup Language  |  2004-04-17  |  11KB  |  307 lines

  1. <?xml version="1.0"?>
  2. <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
  3. <?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?>
  4. <!-- $Revision: 1.6.2.5 $ -->
  5.  
  6. <!--
  7.  Copyright 2002-2004 The Apache Software Foundation
  8.  
  9.  Licensed under the Apache License, Version 2.0 (the "License");
  10.  you may not use this file except in compliance with the License.
  11.  You may obtain a copy of the License at
  12.  
  13.      http://www.apache.org/licenses/LICENSE-2.0
  14.  
  15.  Unless required by applicable law or agreed to in writing, software
  16.  distributed under the License is distributed on an "AS IS" BASIS,
  17.  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  18.  See the License for the specific language governing permissions and
  19.  limitations under the License.
  20. -->
  21.  
  22. <modulesynopsis metafile="mod_vhost_alias.xml.meta">
  23.  
  24. <name>mod_vhost_alias</name>
  25. <description>Provides for dynamically configured mass virtual
  26. hosting</description>
  27. <status>Extension</status>
  28. <sourcefile>mod_vhost_alias.c</sourcefile>
  29. <identifier>vhost_alias_module</identifier>
  30.  
  31. <summary>
  32.     <p>This module creates dynamically configured virtual hosts, by
  33.     allowing the IP address and/or the <code>Host:</code> header of
  34.     the HTTP request to be used as part of the pathname to
  35.     determine what files to serve. This allows for easy use of a
  36.     huge number of virtual hosts with similar configurations.</p>
  37.     
  38.     <note><title>Note</title>
  39.       <p>If <module>mod_alias</module> or <module>mod_userdir</module> are
  40.       used for translating URIs to filenames, they will override the
  41.       directives of <module>mod_vhost_alias</module> described below. For
  42.       example, the following configuration will map <code>
  43.       /cgi-bin/script.pl</code> to <code>
  44.       /usr/local/apache2/cgi-bin/script.pl</code> in all cases:</p>
  45.  
  46.       <example>
  47.         ScriptAlias /cgi-bin/ /usr/local/apache2/cgi-bin/<br />
  48.         VirtualScriptAlias /never/found/%0/cgi-bin/
  49.       </example>
  50.     </note>
  51. </summary>
  52.  
  53. <seealso><directive module="core">UseCanonicalName</directive></seealso>
  54. <seealso><a href="../vhosts/mass.html">Dynamically configured mass 
  55.     virtual hosting</a></seealso>
  56.  
  57. <section id="interpol">
  58.     <title>Directory Name Interpolation</title>
  59.  
  60.     <p>All the directives in this module interpolate a string into
  61.     a pathname. The interpolated string (henceforth called the
  62.     "name") may be either the server name (see the <directive
  63.     module="core">UseCanonicalName</directive>
  64.     directive for details on how this is determined) or the IP
  65.     address of the virtual host on the server in dotted-quad
  66.     format. The interpolation is controlled by specifiers inspired
  67.     by <code>printf</code> which have a number of formats:</p>
  68.  
  69. <table>
  70. <columnspec><column width=".2"/><column width=".6"/></columnspec>
  71. <tr><td><code>%%</code></td>
  72. <td>insert a <code>%</code></td></tr>
  73.  
  74. <tr><td><code>%p</code></td>
  75. <td>insert the port number of the virtual host</td></tr>
  76.  
  77. <tr><td><code>%N.M</code></td>
  78. <td>insert (part of) the name</td></tr>
  79.      
  80. </table>
  81.  
  82.     <p><code>N</code> and <code>M</code> are used to specify
  83.     substrings of the name. <code>N</code> selects from the
  84.     dot-separated components of the name, and <code>M</code>
  85.     selects characters within whatever <code>N</code> has selected.
  86.     <code>M</code> is optional and defaults to zero if it isn't
  87.     present; the dot must be present if and only if <code>M</code>
  88.     is present. The interpretation is as follows:</p>
  89.  
  90.     <table>
  91.       <columnspec><column width=".1"/><column width=".4"/></columnspec>
  92.       <tr><td><code>0</code></td>
  93.       <td>the whole name</td></tr>
  94.  
  95.       <tr><td><code>1</code></td>
  96.       <td>the first part</td></tr>
  97.  
  98.       <tr><td><code>2</code></td>
  99.       <td>the second part</td></tr>
  100.  
  101.       <tr><td><code>-1</code></td>
  102.       <td>the last part</td></tr>
  103.  
  104.       <tr><td><code>-2</code></td>
  105.       <td>the penultimate part</td></tr>
  106.  
  107.       <tr><td><code>2+</code></td>
  108.       <td>the second and all subsequent parts</td></tr>
  109.  
  110.       <tr><td><code>-2+</code></td>
  111.       <td>the penultimate and all preceding parts</td></tr>
  112.  
  113.       <tr><td><code>1+</code> and <code>-1+</code></td>
  114.       <td>the same as <code>0</code></td></tr>
  115.     </table>
  116.  
  117.     <p>If <code>N</code> or <code>M</code> is greater than the number
  118.     of parts available a single underscore is interpolated. </p>
  119.  
  120. </section>
  121.  
  122. <section id="examples">
  123.     <title>Examples</title>
  124.  
  125.     <p>For simple name-based virtual hosts you might use the
  126.     following directives in your server configuration file:</p>
  127.  
  128.     <example>
  129.       UseCanonicalName    Off<br />
  130.       VirtualDocumentRoot /usr/local/apache/vhosts/%0
  131.     </example>
  132.  
  133.     <p>A request for
  134.     <code>http://www.example.com/directory/file.html</code> will be
  135.     satisfied by the file
  136.     <code>/usr/local/apache/vhosts/www.example.com/directory/file.html</code>.
  137.     </p> 
  138.  
  139.     <p>For a very large number of virtual hosts it is a good idea
  140.     to arrange the files to reduce the size of the
  141.     <code>vhosts</code> directory. To do this you might use the
  142.     following in your configuration file:</p>
  143.  
  144.     <example>
  145.       UseCanonicalName    Off<br />
  146.       VirtualDocumentRoot /usr/local/apache/vhosts/%3+/%2.1/%2.2/%2.3/%2
  147.     </example>
  148.  
  149.     <p>A request for
  150.     <code>http://www.domain.example.com/directory/file.html</code>
  151.     will be satisfied by the file
  152.     <code>/usr/local/apache/vhosts/example.com/d/o/m/domain/directory/file.html</code>.</p>
  153.  
  154.     <p>A more even spread of files can be achieved by hashing from the
  155.     end of the name, for example: </p>
  156.  
  157. <example>
  158.     VirtualDocumentRoot /usr/local/apache/vhosts/%3+/%2.-1/%2.-2/%2.-3/%2
  159. </example>
  160.  
  161.     <p>The example request would come from
  162.     <code>/usr/local/apache/vhosts/example.com/n/i/a/domain/directory/file.html</code>.</p>
  163.  
  164.     <p>Alternatively you might use: </p>
  165.  
  166. <example>
  167.     VirtualDocumentRoot /usr/local/apache/vhosts/%3+/%2.1/%2.2/%2.3/%2.4+
  168. </example>
  169.  
  170.     <p>The example request would come from
  171.     <code>/usr/local/apache/vhosts/example.com/d/o/m/ain/directory/file.html</code>.</p>
  172.  
  173.     <p>For IP-based virtual hosting you might use the following in
  174.     your configuration file:</p>
  175.  
  176.     <example>
  177.       UseCanonicalName DNS<br />
  178.       VirtualDocumentRootIP /usr/local/apache/vhosts/%1/%2/%3/%4/docs<br />
  179.       VirtualScriptAliasIP  /usr/local/apache/vhosts/%1/%2/%3/%4/cgi-bin
  180.     </example>
  181.  
  182.     <p>A request for
  183.     <code>http://www.domain.example.com/directory/file.html</code>
  184.     would be satisfied by the file
  185.     <code>/usr/local/apache/vhosts/10/20/30/40/docs/directory/file.html</code>
  186.     if the IP address of <code>www.domain.example.com</code> were
  187.     10.20.30.40. A request for
  188.     <code>http://www.domain.example.com/cgi-bin/script.pl</code> would
  189.     be satisfied by executing the program
  190.     <code>/usr/local/apache/vhosts/10/20/30/40/cgi-bin/script.pl</code>.</p>
  191.  
  192.     <p>If you want to include the <code>.</code> character in a
  193.     <code>VirtualDocumentRoot</code> directive, but it clashes with
  194.     a <code>%</code> directive, you can work around the problem in
  195.     the following way:</p>
  196.  
  197. <example>
  198.     VirtualDocumentRoot /usr/local/apache/vhosts/%2.0.%3.0
  199. </example>
  200.  
  201.     <p>A request for
  202.     <code>http://www.domain.example.com/directory/file.html</code>
  203.     will be satisfied by the file
  204.     <code>/usr/local/apache/vhosts/domain.example/directory/file.html</code>.</p>
  205.      
  206.     <p>The <directive module="mod_log_config">LogFormat</directive>
  207.     directives <code>%V</code> and <code>%A</code> are useful
  208.     in conjunction with this module.</p>
  209. </section>
  210.  
  211. <directivesynopsis>
  212. <name>VirtualDocumentRoot</name>
  213. <description>Dynamically configure the location of the document root
  214. for a given virtual host</description>
  215. <syntax>VirtualDocumentRoot <em>interpolated-directory</em>|none</syntax>
  216. <default>VirtualDocumentRoot none</default>
  217. <contextlist>
  218. <context>server config</context>
  219. <context>virtual host</context>
  220. </contextlist>
  221.  
  222. <usage>
  223.  
  224.     <p>The <directive>VirtualDocumentRoot</directive> directive allows you to
  225.     determine where Apache will find your documents based on the
  226.     value of the server name. The result of expanding
  227.     <em>interpolated-directory</em> is used as the root of the
  228.     document tree in a similar manner to the <directive
  229.     module="core">DocumentRoot</directive> directive's argument. 
  230.     If <em>interpolated-directory</em> is <code>none</code> then
  231.     <directive>VirtualDocumentRoot</directive> is turned off. This directive 
  232.     cannot be used in the same context as <directive
  233.     module="mod_vhost_alias">VirtualDocumentRootIP</directive>.</p>
  234.  
  235. </usage>
  236. </directivesynopsis>
  237.  
  238. <directivesynopsis>
  239. <name>VirtualDocumentRootIP</name>
  240. <description>Dynamically configure the location of the document root
  241. for a given virtual host</description>
  242. <syntax>VirtualDocumentRootIP <em>interpolated-directory</em>|none</syntax>
  243. <default>VirtualDocumentRootIP none</default>
  244. <contextlist>
  245. <context>server config</context>
  246. <context>virtual host</context>
  247. </contextlist>
  248.  
  249. <usage>
  250.  
  251. <p>The <directive>VirtualDocumentRootIP</directive> directive is like the
  252.     <directive module="mod_vhost_alias">VirtualDocumentRoot</directive>
  253.     directive, except that it uses the IP address of the server end
  254.     of the connection for directory interpolation instead of the server
  255.     name.</p>
  256. </usage>
  257. </directivesynopsis>
  258.  
  259. <directivesynopsis>
  260. <name>VirtualScriptAlias</name>
  261. <description>Dynamically configure the location of the CGI directory for
  262. a given virtual host</description>
  263. <syntax>VirtualScriptAlias <em>interpolated-directory</em>|none</syntax>
  264. <default>VirtualScriptAlias none</default>
  265. <contextlist>
  266. <context>server config</context>
  267. <context>virtual host</context>
  268. </contextlist>
  269.  
  270. <usage>
  271.  
  272.     <p>The <directive>VirtualScriptAlias</directive> directive allows you to
  273.     determine where Apache will find CGI scripts in a similar
  274.     manner to <directive module="mod_vhost_alias"
  275.     >VirtualDocumentRoot</directive> does for other documents. It matches
  276.     requests for URIs starting <code>/cgi-bin/</code>, much like <directive
  277.     module="mod_alias">ScriptAlias</directive>
  278.     <code>/cgi-bin/</code> would.</p>
  279.  
  280. </usage>
  281. </directivesynopsis>
  282.  
  283. <directivesynopsis>
  284. <name>VirtualScriptAliasIP</name>
  285. <description>Dynamically configure the location of the cgi directory for
  286. a given virtual host</description>
  287. <syntax>VirtualScriptAliasIP <em>interpolated-directory</em>|none</syntax>
  288. <default>VirtualScriptAliasIP none</default>
  289. <contextlist>
  290. <context>server config</context>
  291. <context>virtual host</context>
  292. </contextlist>
  293.  
  294. <usage>
  295.  
  296.     <p>The <directive>VirtualScriptAliasIP</directive> directive is like the
  297.     <directive module="mod_vhost_alias">VirtualScriptAlias</directive>
  298.     directive, except that it uses the IP address of the server end
  299.     of the connection for directory interpolation instead of the server
  300.     name.</p>
  301.  
  302.     </usage>
  303.  
  304. </directivesynopsis>
  305. </modulesynopsis>
  306.  
  307.