]> git.ipfire.org Git - thirdparty/apache/httpd.git/commitdiff
Backport:
authorJoshua Slive <slive@apache.org>
Tue, 23 Mar 2004 04:24:10 +0000 (04:24 +0000)
committerJoshua Slive <slive@apache.org>
Tue, 23 Mar 2004 04:24:10 +0000 (04:24 +0000)
  Clarify the order of processing in mod_alias.

  PR: 21897

git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/APACHE_2_0_BRANCH@103095 13f79535-47bb-0310-9956-ffa450edef68

docs/manual/mod/mod_alias.html.en
docs/manual/mod/mod_alias.xml

index 49b389939137f06b6d359dbfff561bb1a10c9159..3c3e279bdb5ae6a25dff8005bb2340500d264eab 100644 (file)
 <li><img alt="" src="../images/down.gif" /> <a href="#scriptalias">ScriptAlias</a></li>
 <li><img alt="" src="../images/down.gif" /> <a href="#scriptaliasmatch">ScriptAliasMatch</a></li>
 </ul>
-<h3>See also</h3>
+<h3>Topics</h3>
+<ul id="topics">
+<li><img alt="" src="../images/down.gif" /> <a href="#order">Order of Processing</a></li>
+</ul><h3>See also</h3>
 <ul class="seealso">
 <li><code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code></li>
 <li><a href="../urlmapping.html">Mapping URLs to the filesystem</a></li>
 </ul></div>
+<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="section">
+<h2><a name="order" id="order">Order of Processing</a></h2>
+
+<p>Aliases and Redirects occuring in different contexts are processed
+like other directives according to standard <a href="../sections.html#mergin">merging rules</a>.  But when multiple
+Aliases or Redirects occur in the same context (for example, in the
+same <code class="directive"><a href="../mod/core.html#virtualhost">&lt;VirtualHost&gt;</a></code>
+section) they are processed in a particular order.</p>
+
+<p>First, all Redirects are processed before Aliases are processed,
+and therefore a request that matches a <code class="directive"><a href="#redirect">Redirect</a></code> or <code class="directive"><a href="#redirectmatch">RedirectMatch</a></code> will never have Aliases
+applied.  Second, the Aliases and Redirects are processed in the order
+they appear in the configuration files, with the first match taking
+precedence.</p>
+
+<p>For this reason, when two or more of these directives apply to the
+same sub-path, you must list the most specific path first in order for
+all the directives to have an effect.  For example, the following
+configuration will work as expected:</p>
+
+<div class="example"><p><code>
+Alias /foo/bar /baz<br />
+Alias /foo /gaq
+</code></p></div>
+
+<p>But if the above two directives were reversed in order, the
+<code>/foo</code> <code class="directive"><a href="#alias">Alias</a></code>
+would always match before the <code>/foo/bar</code> <code class="directive"><a href="#alias">Alias</a></code>, so the latter directive would be
+ignored.</p>
 
+</div>
 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
 <div class="directive-section"><h2><a name="Alias" id="Alias">Alias</a> <a name="alias" id="alias">Directive</a></h2>
 <table class="directive">
@@ -331,4 +365,4 @@ and designates the target as a CGI script</td></tr>
 </div><div id="footer">
 <p class="apache">Copyright 1999-2004 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
 <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
-</body></html>
\ No newline at end of file
+</body></html>
index a8cfe6bee75f8625f63978f18fb5d0b86de702b8..7e29b4f67edbfddf8cc5783baf5512e674700d41 100644 (file)
 <seealso><module>mod_rewrite</module></seealso> <seealso><a
 href="../urlmapping.html">Mapping URLs to the filesystem</a></seealso>
 
+<section id="order"><title>Order of Processing</title>
+
+<p>Aliases and Redirects occuring in different contexts are processed
+like other directives according to standard <a
+href="../sections.html#mergin">merging rules</a>.  But when multiple
+Aliases or Redirects occur in the same context (for example, in the
+same <directive type="section" module="core">VirtualHost</directive>
+section) they are processed in a particular order.</p>
+
+<p>First, all Redirects are processed before Aliases are processed,
+and therefore a request that matches a <directive
+module="mod_alias">Redirect</directive> or <directive
+module="mod_alias">RedirectMatch</directive> will never have Aliases
+applied.  Second, the Aliases and Redirects are processed in the order
+they appear in the configuration files, with the first match taking
+precedence.</p>
+
+<p>For this reason, when two or more of these directives apply to the
+same sub-path, you must list the most specific path first in order for
+all the directives to have an effect.  For example, the following
+configuration will work as expected:</p>
+
+<example>
+Alias /foo/bar /baz<br />
+Alias /foo /gaq
+</example>
+
+<p>But if the above two directives were reversed in order, the
+<code>/foo</code> <directive module="mod_alias">Alias</directive>
+would always match before the <code>/foo/bar</code> <directive
+module="mod_alias">Alias</directive>, so the latter directive would be
+ignored.</p>
+
+</section>
+
 <directivesynopsis>
 <name>Alias</name>
 <description>Maps URLs to filesystem locations</description>