| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> |
| <HTML> |
| <HEAD> |
| <TITLE>Apache module mod_vhost_alias</TITLE> |
| </HEAD> |
| |
| <!-- Background white, links blue (unvisited), navy (visited), red (active) --> |
| <BODY |
| BGCOLOR="#FFFFFF" |
| TEXT="#000000" |
| LINK="#0000FF" |
| VLINK="#000080" |
| ALINK="#FF0000" |
| > |
| <DIV ALIGN="CENTER"> |
| <IMG SRC="../images/sub.gif" ALT="[APACHE DOCUMENTATION]"> |
| <H3> |
| Apache HTTP Server Version 1.3 |
| </H3> |
| </DIV> |
| |
| <H1 ALIGN="CENTER">Module mod_vhost_alias</H1> |
| |
| <P> |
| This module is contained in the <CODE>mod_vhost_alias.c</CODE> file |
| and is not compiled in by default. It provides support for |
| <A HREF="../vhosts/mass.html">dynamically configured mass virtual |
| hosting</A>. |
| </P> |
| |
| <H2>Directory Name Interpolation</H2> |
| |
| <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 |
| <A HREF="core.html#usecanonicalname"><CODE>UseCanonicalName</CODE></A> |
| 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: |
| <DL> |
| <DT><CODE>%%</CODE> |
| <DD>insert a <CODE>%</CODE> |
| <DT><CODE>%p</CODE> |
| <DD>insert the port number of the virtual host |
| <DT><CODE>%N.M</CODE> |
| <DD>insert (part of) the name |
| </DL> |
| </P> |
| |
| <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: |
| <DL> |
| <DT><CODE>0</CODE> |
| <DD>the whole name |
| <DT><CODE>1</CODE> |
| <DD>the first part |
| <DT><CODE>2</CODE> |
| <DD>the second part |
| <DT><CODE>-1</CODE> |
| <DD>the last part |
| <DT><CODE>-2</CODE> |
| <DD>the penultimate part |
| <DT><CODE>2+</CODE> |
| <DD>the second and all subsequent parts |
| <DT><CODE>-2+</CODE> |
| <DD>the penultimate and all preceding parts |
| <DT><CODE>1+</CODE> and <CODE>-1+</CODE> |
| <DD>the same as <CODE>0</CODE> |
| </DL> |
| If <CODE>N</CODE> or <CODE>M</CODE> is greater than the number of |
| parts available a single underscore is interpolated. |
| </P> |
| |
| <H3>Examples</H3> |
| |
| <P> |
| For simple name-based virtual hosts you might use the following |
| directives in your server configuration file: |
| <PRE> |
| UseCanonicalName Off |
| VirtualDocumentRoot /usr/local/apache/vhosts/%0 |
| </PRE> |
| 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: |
| <PRE> |
| UseCanonicalName Off |
| VirtualDocumentRoot /usr/local/apache/vhosts/%3+/%2.1/%2.2/%2.3/%2 |
| </PRE> |
| A request for <CODE>http://www.example.isp.com/directory/file.html</CODE> |
| will be satisfied by the file |
| <CODE>/usr/local/apache/isp.com/e/x/a/example/directory/file.html</CODE>. |
| A more even spread of files can be achieved by hashing from the end of |
| the name, for example: |
| <PRE> |
| VirtualDocumentRoot /usr/local/apache/vhosts/%3+/%2.-1/%2.-2/%2.-3/%2 |
| </PRE> |
| The example request would come from |
| <CODE>/usr/local/apache/vhosts/isp.com/e/l/p/example/directory/file.html</CODE>. |
| Alternatively you might use: |
| <PRE> |
| VirtualDocumentRoot /usr/local/apache/vhosts/%3+/%2.1/%2.2/%2.3/%2.4+ |
| </PRE> |
| The example request would come from |
| <CODE>/usr/local/apache/vhosts/isp.com/e/x/a/mple/directory/file.html</CODE>. |
| </P> |
| |
| <P> |
| For IP-based virtual hosting you might use the following in your |
| configuration file: |
| <PRE> |
| UseCanonicalName DNS |
| VirtualDocumentRootIP /usr/local/apache/vhost/%1/%2/%3/%4/docs |
| VirtualScriptAliasIP /usr/local/apache/vhost/%1/%2/%3/%4/cgi-bin |
| </PRE> |
| A request for <CODE>http://www.example.isp.com/directory/file.html</CODE> |
| would be satisfied by the file |
| <CODE>/usr/local/apache/10/20/30/40/docs/directory/file.html</CODE> if |
| the IP address of <CODE>www.example.com</CODE> were 10.20.30.40. |
| A request for <CODE>http://www.example.isp.com/cgi-bin/script.pl</CODE> |
| would be satisfied by executing the program |
| <CODE>/usr/local/apache/10/20/30/40/cgi-bin/script.pl</CODE>. |
| </P> |
| |
| <P> |
| The <A HREF="mod_log_config.html#formats">LogFormat directives</A> |
| <CODE>%V</CODE> and <CODE>%A</CODE> are useful in conjunction with |
| this module. |
| </P> |
| |
| <HR> |
| |
| <H2>Directives</H2> |
| <UL> |
| <LI><A HREF="#virtualdocumentroot">VirtualDocumentRoot</A> |
| <LI><A HREF="#virtualdocumentrootip">VirtualDocumentRootIP</A> |
| <LI><A HREF="#virtualscriptalias">VirtualScriptAlias</A> |
| <LI><A HREF="#virtualscriptaliasip">VirtualScriptAliasIP</A> |
| </UL> |
| <HR> |
| |
| <H2><A NAME="virtualdocumentroot">VirtualDocumentRoot directive</A></H2> |
| <P> |
| <A |
| HREF="directive-dict.html#Syntax" |
| REL="Help" |
| ><STRONG>Syntax:</STRONG></A> VirtualDocumentRoot <EM>interpolated-directory</EM><BR> |
| <A |
| HREF="directive-dict.html#Default" |
| REL="Help" |
| ><STRONG>Default:</STRONG></A> None<BR> |
| <A |
| HREF="directive-dict.html#Context" |
| REL="Help" |
| ><STRONG>Context:</STRONG></A> server config, virtual host<BR> |
| <A |
| HREF="directive-dict.html#Status" |
| REL="Help" |
| ><STRONG>Status:</STRONG></A> Extension<BR> |
| <A |
| HREF="directive-dict.html#Module" |
| REL="Help" |
| ><STRONG>Module:</STRONG></A> mod_vhost_alias<BR> |
| <A |
| HREF="directive-dict.html#Compatibility" |
| REL="Help" |
| ><STRONG>Compatibility:</STRONG></A> VirtualDocumentRoot is only available in 1.3.7 and later.</P> |
| <P> |
| The <CODE>VirtualDocumentRoot</CODE> 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 |
| <A HREF="core.html#documentroot"><CODE>DocumentRoot</CODE></A> |
| directive's argument. If <EM>interpolated-directory</EM> is |
| <CODE>none</CODE> then <CODE>VirtaulDocumentRoot</CODE> is turned off. |
| This directive cannot be used in the same context as |
| <A HREF="#virtualdocumentrootip"><CODE>VirtualDocumentRootIP</CODE></A>. |
| </P> |
| <HR> |
| |
| <H2><A NAME="virtualdocumentrootip">VirtualDocumentRootIP directive</A></H2> |
| <P> |
| <A |
| HREF="directive-dict.html#Syntax" |
| REL="Help" |
| ><STRONG>Syntax:</STRONG></A> VirtualDocumentRootIP <EM>interpolated-directory</EM><BR> |
| <A |
| HREF="directive-dict.html#Default" |
| REL="Help" |
| ><STRONG>Default:</STRONG></A> None<BR> |
| <A |
| HREF="directive-dict.html#Context" |
| REL="Help" |
| ><STRONG>Context:</STRONG></A> server config, virtual host<BR> |
| <A |
| HREF="directive-dict.html#Status" |
| REL="Help" |
| ><STRONG>Status:</STRONG></A> Extension<BR> |
| <A |
| HREF="directive-dict.html#Module" |
| REL="Help" |
| ><STRONG>Module:</STRONG></A> mod_vhost_alias<BR> |
| <A |
| HREF="directive-dict.html#Compatibility" |
| REL="Help" |
| ><STRONG>Compatibility:</STRONG></A> VirtualDocumentRootIP is only available in 1.3.7 and later.</P> |
| <P> |
| The <CODE>VirtualDocumentRootIP</CODE> directive is like the |
| <A HREF="#virtualdocumentroot"><CODE>VirtualDocumentRoot</CODE></A> directive, |
| except that it uses the IP address of the server end of the connection |
| instead of the server name. |
| </P> |
| <HR> |
| |
| <H2><A NAME="virtualscriptalias">VirtualScriptAlias directive</A></H2> |
| <P> |
| <A |
| HREF="directive-dict.html#Syntax" |
| REL="Help" |
| ><STRONG>Syntax:</STRONG></A> VirtualScriptAlias <EM>interpolated-directory</EM><BR> |
| <A |
| HREF="directive-dict.html#Default" |
| REL="Help" |
| ><STRONG>Default:</STRONG></A> None<BR> |
| <A |
| HREF="directive-dict.html#Context" |
| REL="Help" |
| ><STRONG>Context:</STRONG></A> server config, virtual host<BR> |
| <A |
| HREF="directive-dict.html#Status" |
| REL="Help" |
| ><STRONG>Status:</STRONG></A> Extension<BR> |
| <A |
| HREF="directive-dict.html#Module" |
| REL="Help" |
| ><STRONG>Module:</STRONG></A> mod_vhost_alias<BR> |
| <A |
| HREF="directive-dict.html#Compatibility" |
| REL="Help" |
| ><STRONG>Compatibility:</STRONG></A> VirtualScriptAlias is only available in 1.3.7 and later.</P> |
| <P> |
| The <CODE>VirtualScriptAlias</CODE> directive allows you to determine |
| where Apache will find CGI scripts in a similar manner to |
| <A HREF="#virtualdocumentroot"><CODE>VirtualDocumentRoot</CODE></A> |
| does for other documents. It matches requests for URIs starting |
| <CODE>/cgi-bin/</CODE>, much like |
| <CODE><A HREF="mod_alias.html#scriptalias">ScriptAlias</A> /cgi-bin/</CODE> |
| would. |
| </P> |
| <HR> |
| |
| <H2><A NAME="virtualscriptaliasip">VirtualScriptAliasIP directive</A></H2> |
| <P> |
| <A |
| HREF="directive-dict.html#Syntax" |
| REL="Help" |
| ><STRONG>Syntax:</STRONG></A> VirtualScriptAliasIP <EM>interpolated-directory</EM><BR> |
| <A |
| HREF="directive-dict.html#Default" |
| REL="Help" |
| ><STRONG>Default:</STRONG></A> None<BR> |
| <A |
| HREF="directive-dict.html#Context" |
| REL="Help" |
| ><STRONG>Context:</STRONG></A> server config, virtual host<BR> |
| <A |
| HREF="directive-dict.html#Status" |
| REL="Help" |
| ><STRONG>Status:</STRONG></A> Extension<BR> |
| <A |
| HREF="directive-dict.html#Module" |
| REL="Help" |
| ><STRONG>Module:</STRONG></A> mod_vhost_alias<BR> |
| <A |
| HREF="directive-dict.html#Compatibility" |
| REL="Help" |
| ><STRONG>Compatibility:</STRONG></A> VirtualScriptAliasIP is only available in 1.3.7 and later.</P> |
| <P> |
| The <CODE>VirtualScriptAliasIP</CODE> directive is like the |
| <A HREF="#virtualscriptalias"><CODE>VirtualScriptAlias</CODE></A> directive, |
| except that it uses the IP address of the server end of the connection |
| instead of the server name. |
| </P> |
| <HR> |
| |
| <H3 ALIGN="CENTER"> |
| Apache HTTP Server Version 1.3 |
| </H3> |
| |
| <A HREF="./"><IMG SRC="../images/index.gif" ALT="Index"></A> |
| <A HREF="../"><IMG SRC="../images/home.gif" ALT="Home"></A> |
| |
| </BODY> |
| </HTML> |