mirror of
				https://github.com/apache/httpd.git
				synced 2025-11-03 17:53:20 +03:00 
			
		
		
		
	git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@86351 13f79535-47bb-0310-9956-ffa450edef68
		
			
				
	
	
		
			346 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
			
		
		
	
	
			346 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			HTML
		
	
	
	
	
	
<!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"
 | 
						|
>
 | 
						|
<!--#include virtual="header.html" -->
 | 
						|
<H1 ALIGN="CENTER">Module mod_vhost_alias</H1>
 | 
						|
 | 
						|
<P>
 | 
						|
This module provides support for <A
 | 
						|
HREF="../vhosts/mass.html">dynamically configured mass virtual
 | 
						|
hosting</A>.
 | 
						|
</P>
 | 
						|
 | 
						|
<P><A
 | 
						|
HREF="module-dict.html#Status"
 | 
						|
REL="Help"
 | 
						|
><STRONG>Status:</STRONG></A> Extension
 | 
						|
<BR>
 | 
						|
<A
 | 
						|
HREF="module-dict.html#SourceFile"
 | 
						|
REL="Help"
 | 
						|
><STRONG>Source File:</STRONG></A> mod_vhost_alias.c
 | 
						|
<BR>
 | 
						|
<A
 | 
						|
HREF="module-dict.html#ModuleIdentifier"
 | 
						|
REL="Help"
 | 
						|
><STRONG>Module Identifier:</STRONG></A> vhost_alias_module
 | 
						|
<BR>
 | 
						|
<A
 | 
						|
HREF="module-dict.html#Compatibility"
 | 
						|
REL="Help"
 | 
						|
><STRONG>Compatibility:</STRONG></A> Available in Apache 1.3.7 and later.
 | 
						|
</P>
 | 
						|
 | 
						|
<h2>Summary</h2>
 | 
						|
 | 
						|
<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>
 | 
						|
 | 
						|
<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>
 | 
						|
 | 
						|
<p>See also: <a href="core.html#usecanonicalname">UseCanonicalName</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/vhosts/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/vhosts/%1/%2/%3/%4/docs
 | 
						|
	VirtualScriptAliasIP	/usr/local/apache/vhosts/%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/vhosts/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/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:
 | 
						|
<PRE>
 | 
						|
	VirtualDocumentRoot	/usr/local/apache/vhosts/%2.0.%3.0
 | 
						|
</PRE>
 | 
						|
A request for <CODE>http://www.example.isp.com/directory/file.html</CODE>
 | 
						|
will be satisfied by the file
 | 
						|
<CODE>/usr/local/apache/vhosts/example.isp/directory/file.html</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><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>
 |