summaryrefslogtreecommitdiff
path: root/docs/manual/sections.html.en
diff options
context:
space:
mode:
authorpcs <pcs@unknown>1997-08-24 14:16:04 +0000
committerpcs <pcs@unknown>1997-08-24 14:16:04 +0000
commit2228b8d6c679a1edd9025740c25c7fd7c9268a1f (patch)
treeaacbb00bb692b684e127e515f85554078529270f /docs/manual/sections.html.en
parent779a53080ccc08a4273e07346a66dc33db158898 (diff)
downloadhttpd-2228b8d6c679a1edd9025740c25c7fd7c9268a1f.tar.gz
Add document explaining how Directory, Location and Files sections
are merged. Based on Dean's explanation from PR#586. Link to this doc from the directive descriptions in core.html. PR: 586 git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@79051 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'docs/manual/sections.html.en')
-rw-r--r--docs/manual/sections.html.en139
1 files changed, 139 insertions, 0 deletions
diff --git a/docs/manual/sections.html.en b/docs/manual/sections.html.en
new file mode 100644
index 0000000000..a145a56531
--- /dev/null
+++ b/docs/manual/sections.html.en
@@ -0,0 +1,139 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html><head>
+<title>How Directory, Location and Files sections work</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">How Directory, Location and Files sections work</h1>
+
+The sections <a
+href="mod/core.html#directory"><code>&lt;Directory&gt;</code></a>, <a
+href="mod/core.html#location"><code>&lt;Location&gt;</code></a> and <a
+href="mode/core.html#files"><code>&lt;Files&gt;</code></a> can contain
+directives which only apply to specified directories, URLs or files
+respectively. Also htaccess files can be used inside a directory to
+apply directives to that directory. This document explains how these
+different sections differ and how they relate to each other when
+Apache decides which directives apply for a particular directory or
+request URL.
+
+<h2>Directives allowed in the sections</h2>
+
+Everything that is syntactically allowed in
+<code>&lt;Directory&gt;</code> is also allowed in
+<code>&lt;Location&gt;</code> (except a sub-<code>&lt;Files&gt;</code>
+section, but the code doesn't test for that, Lars has an open bug
+report on that). Semantically however some things, and the most
+notable is AllowOverrides, make no sense in
+<code>&lt;Location&gt;</code>. The same for
+<code>&lt;Files&gt;</code> -- syntactically everything is fine, but
+semantically some things are different.
+
+<h2>How the sections are merged</h2>
+
+The order of merging is:
+
+<ol>
+
+<li>
+
+ <code>&lt;Directory&gt;</code> (except regular expressions) and
+ .htaccess done simultaneously (with .htaccess overriding
+ <code>&lt;Directory&gt;</code>)
+
+</li>
+
+<li>
+ <code>&lt;DirectoryMatch&gt;</code>, and
+ <code>&lt;Directory&gt;</code> with regular expressions
+
+</li>
+
+ <li><code>&lt;Files&gt;</code> and <code>&lt;FilesMatch&gt;</code> done simultaneously
+ </li>
+
+ <li><code>&lt;Location&gt;</code> and <code>&lt;LocationMatch&gt;</code> done simultaneously
+ </li>
+
+</ol>
+
+Apart from <code>&lt;Directory&gt;</code>, each group is processed in
+the order that they appear in the configuration
+files. <code>&lt;Directory&gt;</code> (group 1 above) is processed in
+the order shortest directory component to longest. If multiple
+<code>&lt;Directory&gt;</code> sections apply to the same directory
+they they are processed in the configuration file order. The
+configuration files are read in the order httpd.conf, srm.conf and
+access.conf. Configurations included via the <code>Include</code>
+directive will be treated as if they where inside the including file
+at the location of the <code>Include</code> directive.
+
+<p>
+
+Sections inside <code>&lt;VirtualHost&gt;</code> sections are applied
+<i>after</i> the corresponding sections outside the virtual host
+definition. This allows virtual hosts to override the main server
+configuration. (Note: this only works correctly from 1.2.2 and 1.3a2
+onwards. Before those releases sections inside virtual hosts were
+applied <i>before</i> the main server).
+
+<h2>Notes about using sections</h2>
+
+The general guidelines are:
+
+<p>
+
+<ul>
+<li>
+ If you are attempting to match objects at the filesystem level
+ then you must use <code>&lt;Directory&gt;</code> and/or
+ <code>&lt;Files&gt;</code>.
+</li>
+
+<li>
+ If you are attempting to match objects at the URL level then you
+ must use <code>&lt;Location&gt;</code>
+</li>
+</ul>
+
+But a notable exception is:
+
+<ul>
+<li>
+ proxy control is done via <code>&lt;Directory&gt;</code>. This is
+ a legacy mistake because the proxy existed prior to
+ <code>&lt;Location&gt;</code>. A future version of the config
+ language should probably switch this to
+ <code>&lt;Location&gt;</code>.
+</li>
+</ul>
+
+Note also that modifying .htaccess parsing during Location doesn't do
+anything because .htaccess parsing has already occured.
+
+<p>
+
+Another note:
+<p>
+
+<ul>
+<li>
+ There is actually a
+ <code>&lt;Location&gt;</code>/<code>&lt;LocationMatch&gt;</code>
+ sequence performed just before the name translation phase (where
+ <code>Aliases</code> and <code>DocumentRoots</code> are used to
+ map URLs to filenames). The results of this sequence are
+ completely thrown away after the translation has completed.
+</li>
+</ul>
+
+<!--#include virtual="footer.html" -->
+</body></html>