<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<TITLE>Apache module mod_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_alias</H1>
<P>
This module is contained in the <CODE>mod_alias.c</CODE> file, and
is compiled in by default. It provides for mapping different parts of the
host filesystem in the the document tree, and for URL redirection.
</P>

<H2>Directives</H2>
<UL>
<LI><A HREF="#alias">Alias</A>
<LI><A HREF="#aliasmatch">AliasMatch</A>
<LI><A HREF="#redirect">Redirect</A>
<LI><A HREF="#redirectmatch">RedirectMatch</A>
<LI><A HREF="#redirecttemp">RedirectTemp</A>
<LI><A HREF="#redirectperm">RedirectPermanent</A>
<LI><A HREF="#scriptalias">ScriptAlias</A>
<LI><A HREF="#scriptaliasmatch">ScriptAliasMatch</A>
</UL>
<HR>


<H2><A NAME="alias">Alias directive</A></H2>
<P>
<!--%plaintext &lt;?INDEX {\tt Alias} directive&gt; -->
<A
 HREF="directive-dict.html#Syntax"
 REL="Help"
><STRONG>Syntax:</STRONG></A> Alias <EM>url-path directory-filename</EM><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> Base<BR>
<A
 HREF="directive-dict.html#Module"
 REL="Help"
><STRONG>Module:</STRONG></A> mod_alias
</P>
<P>
The Alias directive allows documents to be stored in the local filesystem
other than under the <A HREF="core.html#documentroot">DocumentRoot</A>.
URLs with a (%-decoded) path beginning with <EM>url-path</EM> will be
mapped to local files beginning with <EM>directory-filename</EM>.
<P>
Example:
</P>
<BLOCKQUOTE><CODE>Alias /image /ftp/pub/image</CODE></BLOCKQUOTE>
<P>
A request for http://myserver/image/foo.gif would cause the server to
return the file /ftp/pub/image/foo.gif.
</P>
<P>
Note that if you include a trailing / on the <EM>url-path</EM> then the
server will require a trailing / in order to expand the alias.  That is,
if you use <CODE>Alias /icons/ /usr/local/apache/icons/</CODE> then
the url <CODE>/icons</CODE> will not be aliased.
</P>
<P>
Note that you may need to specify additional
<A HREF="core.html#directory"><CODE>&lt;Directory&gt;</CODE></A> sections
which cover the <EM>destination</EM> of aliases.  Aliasing occurs
before <CODE>&lt;Directory&gt;</CODE> sections are checked, so only
the destination of aliases are affected.  (Note however
<A HREF="core.html#location"><CODE>&lt;Location&gt;</CODE></A>
sections are run through once before aliases are performed, so they
will apply.)
<P>
See also <A HREF="#scriptalias">ScriptAlias</A>.
</P>
<HR>

<H2><A NAME="aliasmatch">AliasMatch</A></H2>
<P>
<A
 HREF="directive-dict.html#Syntax"
 REL="Help"
><STRONG>Syntax:</STRONG></A> AliasMatch <EM>regex directory-filename</EM><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> Base<BR>
<A
 HREF="directive-dict.html#Module"
 REL="Help"
><STRONG>Module:</STRONG></A> mod_alias<BR>
<A
 HREF="directive-dict.html#Compatibility"
 REL="Help"
><STRONG>Compatibility:</STRONG></A> Available in Apache 1.3 and later
</P>

<P>This directive is equivalent to <A HREF="#alias">Alias</A>, but
makes use of standard regular expressions, instead of simple prefix
matching. The supplied regular expression is matched against the URL,
and if it matches, the server will substitute any parenthesized
matches into the given string and use it as a filename. For example,
to activate the <CODE>/icons</CODE> directory, one might use:
<PRE>
    AliasMatch ^/icons(.*) /usr/local/apache/icons$1
</PRE>
</P>

<HR>

<H2><A NAME="redirect">Redirect directive</A></H2>
<P>
<!--%plaintext &lt;?INDEX {\tt Redirect} directive&gt; -->
<A
 HREF="directive-dict.html#Syntax"
 REL="Help"
><STRONG>Syntax:</STRONG></A> Redirect [ <EM>status</EM> ]
 <EM>url-path url</EM><BR>
<A
 HREF="directive-dict.html#Context"
 REL="Help"
><STRONG>Context:</STRONG></A> server config, virtual host, directory,
 .htaccess<BR>
<A
 HREF="directive-dict.html#Override"
 REL="Help"
><STRONG>Override:</STRONG></A> FileInfo<BR>
<A
 HREF="directive-dict.html#Status"
 REL="Help"
><STRONG>Status:</STRONG></A> Base<BR>
<A
 HREF="directive-dict.html#Module"
 REL="Help"
><STRONG>Module:</STRONG></A> mod_alias<BR>
<A
 HREF="directive-dict.html#Compatibility"
 REL="Help"
><STRONG>Compatibility:</STRONG></A> The directory and .htaccess context's
are only available in versions 1.1 and later. The <EM>status</EM>
argument is only available in Apache 1.2 or later.
</P>
<P>
The Redirect directive maps an old URL into a new one. The new URL is returned
to the client which attempts to fetch it again with the new address.
<EM>Url-path</EM> a (%-decoded) path; any requests for documents beginning with
this path will be returned a redirect error to a new (%-encoded) url
beginning with <EM>url</EM>.
</P>
<P>
Example:
</P>
<BLOCKQUOTE><CODE>Redirect /service
http://foo2.bar.com/service</CODE></BLOCKQUOTE>
<P>
If the client requests http://myserver/service/foo.txt, it will be told to
access http://foo2.bar.com/service/foo.txt instead.
</P>
<P>
<STRONG>Note:</STRONG> Redirect directives take precedence over Alias
and ScriptAlias
directives, irrespective of their ordering in the configuration file.  Also,
<EM>Url-path</EM> must be an absolute path, not a relative path, even
when used with .htaccess files or inside of &lt;Directory&gt; sections.
</P>
<P>
If no <EM>status</EM> argument is given, the redirect will be
&quot;temporary&quot; (HTTP status 302). This indicates to the client that the
resources is has moved temporarily. The <EM>status</EM>
argument can be used to return other HTTP status codes:
<P>
<DL>
<DT>permanent
<DD>Returns a permanent redirect status (301) indicating that
the resource has moved permanently.
<DT>temp
<DD>Returns a temporary redirect status (302). This is the
default.
<DT>seeother
<DD>Returns a "See Other" status (303) indicating that
the resource has been replaced.
<DT>gone
<DD>Returns a "Gone" status (410) indicating that the resource
has been permanently removed. When this status is used the <EM>url</EM>
argument should be omitted.
</DL>
<P>
Other status codes can be returned by giving the numeric status code
as the value of <EM>status</EM>. If the status is between 300 and 399,
the <EM>url</EM> argument must be present, otherwise it must be
omitted. Note that the status must be known to the Apache code (see
the function <CODE>send_error_response</CODE> in http_protocol.c).
</P>
<HR>

<H2><A NAME="redirectmatch">RedirectMatch</A></H2>
<P>
<A
 HREF="directive-dict.html#Syntax"
 REL="Help"
><STRONG>Syntax:</STRONG></A>
    RedirectMatch [<EM>status</EM>] <EM>regex url</EM>
<BR>
<A
 HREF="directive-dict.html#Context"
 REL="Help"
><STRONG>Context:</STRONG></A> server config, virtual host, directory,
 .htaccess<BR>
<A
 HREF="directive-dict.html#Override"
 REL="Help"
><STRONG>Override:</STRONG></A> FileInfo<BR>
<A
 HREF="directive-dict.html#Status"
 REL="Help"
><STRONG>Status:</STRONG></A> Base<BR>
<A
 HREF="directive-dict.html#Module"
 REL="Help"
><STRONG>Module:</STRONG></A> mod_alias<BR>
<A
 HREF="directive-dict.html#Compatibility"
 REL="Help"
><STRONG>Compatibility:</STRONG></A> Available in Apache 1.3 and later
</P>

<P>This directive is equivalent to <A HREF="#alias">Redirect</A>, but
makes use of standard regular expressions, instead of simple prefix
matching. The supplied regular expression is matched against the URL,
and if it matches, the server will substitute any parenthesized
matches into the given string and use it as a filename. For example,
to redirect all GIF files to like-named JPEG files on another server,
one might use:
<PRE>
    RedirectMatch (.*)\.gif$ http://www.anotherserver.com$1.jpg
</PRE>
</P>

<HR>

<H2><A NAME="redirecttemp">RedirectTemp directive</A></H2>
<P>
<!--%plaintext &lt;?INDEX {\tt Redirect} directive&gt; -->
<A
 HREF="directive-dict.html#Syntax"
 REL="Help"
><STRONG>Syntax:</STRONG></A> RedirectTemp <EM>url-path url</EM><BR>
<A
 HREF="directive-dict.html#Context"
 REL="Help"
><STRONG>Context:</STRONG></A> server config, virtual host, directory,
 .htaccess<BR>
<A
 HREF="directive-dict.html#Override"
 REL="Help"
><STRONG>Override:</STRONG></A> FileInfo<BR>
<A
 HREF="directive-dict.html#Status"
 REL="Help"
><STRONG>Status:</STRONG></A> Base<BR>
<A
 HREF="directive-dict.html#Module"
 REL="Help"
><STRONG>Module:</STRONG></A> mod_alias<BR>
<A
 HREF="directive-dict.html#Compatibility"
 REL="Help"
><STRONG>Compatibility:</STRONG></A> This directive is only available in 1.2
</P>
<P>
This directive makes the client know that the Redirect is only
temporary (status 302). Exactly equivalent to <CODE>Redirect
temp</CODE>.
</P>
<HR>

<H2><A NAME="redirectperm">RedirectPermanent directive</A></H2>
<P>
<!--%plaintext &lt;?INDEX {\tt Redirect} directive&gt; -->
<A
 HREF="directive-dict.html#Syntax"
 REL="Help"
><STRONG>Syntax:</STRONG></A> RedirectPermanent <EM>url-path url</EM><BR>
<A
 HREF="directive-dict.html#Context"
 REL="Help"
><STRONG>Context:</STRONG></A> server config, virtual host, directory,
 .htaccess<BR>
<A
 HREF="directive-dict.html#Override"
 REL="Help"
><STRONG>Override:</STRONG></A> FileInfo<BR>
<A
 HREF="directive-dict.html#Status"
 REL="Help"
><STRONG>Status:</STRONG></A> Base<BR>
<A
 HREF="directive-dict.html#Module"
 REL="Help"
><STRONG>Module:</STRONG></A> mod_alias<BR>
<A
 HREF="directive-dict.html#Compatibility"
 REL="Help"
><STRONG>Compatibility:</STRONG></A> This directive is only available in 1.2
</P>
<P>
This directive makes the client know that the Redirect is permanent
(status 301). Exactly equivalent to <CODE>Redirect permanent</CODE>.
</P>
<HR>

<H2><A NAME="scriptalias">ScriptAlias directive</A></H2>
<P>
<!--%plaintext &lt;?INDEX {\tt ScriptAlias} directive&gt; -->
<A
 HREF="directive-dict.html#Syntax"
 REL="Help"
><STRONG>Syntax:</STRONG></A> ScriptAlias <EM>url-path directory-filename</EM>
<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> Base<BR>
<A
 HREF="directive-dict.html#Module"
 REL="Help"
><STRONG>Module:</STRONG></A> mod_alias
</P>
<P>
The ScriptAlias directive has the same behavior as the
<A HREF="#alias">Alias</A> directive, except that in addition it
marks the target directory as containing CGI scripts.
URLs with a (%-decoded) path beginning with <EM>url-path</EM> will be
mapped to scripts beginning with <EM>directory-filename</EM>.
<P>
Example:
</P>
<BLOCKQUOTE><CODE>ScriptAlias /cgi-bin/ /web/cgi-bin/</CODE></BLOCKQUOTE>
<P>
A request for http://myserver/cgi-bin/foo would cause the server to
run the script /web/cgi-bin/foo.
</P>

<HR>

<H2><A NAME="scriptaliasmatch">ScriptAliasMatch</A></H2>
<P>
<A
 HREF="directive-dict.html#Syntax"
 REL="Help"
><STRONG>Syntax:</STRONG></A> ScriptAliasMatch
 <EM>regex directory-filename</EM><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> Base<BR>
<A
 HREF="directive-dict.html#Module"
 REL="Help"
><STRONG>Module:</STRONG></A> mod_alias<BR>
<A
 HREF="directive-dict.html#Compatibility"
 REL="Help"
><STRONG>Compatibility:</STRONG></A> Available in Apache 1.3 and later
</P>

<P>This directive is equivalent to <A HREF="#scriptalias">ScriptAlias</A>, but
makes use of standard regular expressions, instead of simple prefix
matching. The supplied regular expression is matched against the URL,
and if it matches, the server will substitute any parenthesized
matches into the given string and use it as a filename. For example,
to activate the standard <CODE>/cgi-bin</CODE>, one might use:
<PRE>
    ScriptAliasMatch ^/cgi-bin(.*) /usr/local/apache/cgi-bin$1
</PRE>
</P>

<!--#include virtual="footer.html" -->
</BODY>
</HTML>
