<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta name="generator" content="HTML Tidy, see www.w3.org" />

    <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>

    <p>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="mod/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.</p>

    <h2>Directives allowed in the sections</h2>

    <p>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). Semantically, however
    some things, most notably <code>AllowOverride</code> and the
    two options <code>FollowSymLinks</code> and
    <code>SymLinksIfOwnerMatch</code>, make no sense in
    <code>&lt;Location&gt;</code>,
    <code>&lt;LocationMatch&gt;</code> or
    <code>&lt;DirectoryMatch&gt;</code>. The same for
    <code>&lt;Files&gt;</code> -- syntactically everything is fine,
    but semantically some things are different.</p>

    <h2>How the sections are merged</h2>

    <p>The order of merging is:</p>

    <ol>
      <li><code>&lt;Directory&gt;</code> (except regular
      expressions) and .htaccess done simultaneously (with
      .htaccess, if allowed, 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>

    <p>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 were inside the including file at the location of the
    <code>Include</code> directive.</p>

    <p>Sections inside <code>&lt;VirtualHost&gt;</code> sections
    are applied <em>after</em> the corresponding sections outside
    the virtual host definition. This allows virtual hosts to
    override the main server configuration.</p>

    <p>Later sections override earlier ones.</p>

    <h2>Notes about using sections</h2>

    <p>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>

    <p>But a notable exception is:</p>

    <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>

    <p>Note about .htaccess parsing:</p>

    <ul>
      <li>Modifying .htaccess parsing during Location doesn't do
      anything because .htaccess parsing has already occurred.</li>
    </ul>

    <p><code>&lt;Location&gt;</code> and symbolic links:</p>

    <ul>
      <li>It is not possible to use "<code>Options
      FollowSymLinks</code>" or "<code>Options
      SymLinksIfOwnerMatch</code>" inside a
      <code>&lt;Location&gt;</code>,
      <code>&lt;LocationMatch&gt;</code> or
      <code>&lt;DirectoryMatch&gt;</code> section (the options are
      simply ignored). Using the options in question is only
      possible inside a <code>&lt;Directory&gt;</code> section (or
      a <code>.htaccess</code> file).</li>
    </ul>

    <p><code>&lt;Files&gt;</code> and <code>Options</code>:</p>

    <ul>
      <li>Apache won't check for it, but using an
      <code>Options</code> directive inside a
      <code>&lt;Files&gt;</code> section has no effect.</li>
    </ul>

    <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>

