mirror of
https://github.com/apache/httpd.git
synced 2025-05-17 15:21:13 +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>
|