<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<meta content="noindex, nofollow" name="robots" />
<!--
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
              This file is generated from xml source: DO NOT EDIT
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      -->
<title>mod_autoindex - Apache HTTP Server</title>
<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
<link href="../images/favicon.ico" rel="shortcut icon" /><link href="http://httpd.apache.org/docs/current/mod/mod_autoindex.html" rel="canonical" /></head>
<body>
<div id="page-header">
<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>
<p class="apache">Apache HTTP Server Version 2.0</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.0</a> &gt; <a href="./">Modules</a></div>
<div id="page-content">
<div class="retired"><h4>Please note</h4>
            <p>This document refers to the <strong>2.0</strong> version of Apache httpd, which <strong>is no longer maintained</strong>. Upgrade, and refer to the current version of httpd instead, documented at:</p>
        <ul><li><a href="http://httpd.apache.org/docs/current/">Current release version of Apache HTTP Server documentation</a></li></ul><p>You may follow <a href="http://httpd.apache.org/docs/current/mod/mod_autoindex.html">this link</a> to go to the current version of this document.</p></div><div id="preamble"><h1>Apache Module mod_autoindex</h1>
<div class="toplang">
<p><span>Available Languages: </span><a href="../en/mod/mod_autoindex.html" title="English">&nbsp;en&nbsp;</a> |
<a href="../ja/mod/mod_autoindex.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
<a href="../ko/mod/mod_autoindex.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="../tr/mod/mod_autoindex.html" hreflang="tr" rel="alternate" title="T&#252;rk&#231;e">&nbsp;tr&nbsp;</a></p>
</div>
<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Generates directory indexes,
    automatically, similar to the Unix <code>ls</code> command or the
    Win32 <code>dir</code> shell command</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">Module&#160;Identifier:</a></th><td>autoindex_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">Source&#160;File:</a></th><td>mod_autoindex.c</td></tr></table>
<h3>Summary</h3>

      <p>The index of a directory can come from one of two
      sources:</p>

    <ul>
      <li>A file written by the user, typically called
      <code>index.html</code>. The <code class="directive"><a href="../mod/mod_dir.html#directoryindex">DirectoryIndex</a></code> directive sets the
      name of this file. This is controlled by
      <code class="module"><a href="../mod/mod_dir.html">mod_dir</a></code>.</li>

      <li>Otherwise, a listing generated by the server. The other
      directives control the format of this listing. The <code class="directive"><a href="#addicon">AddIcon</a></code>, <code class="directive"><a href="#addiconbyencoding">AddIconByEncoding</a></code> and
      <code class="directive"><a href="#addiconbytype">AddIconByType</a></code> are
      used to set a list of icons to display for various file types;
      for each file listed, the first icon listed that matches the
      file is displayed. These are controlled by
      <code class="module"><a href="../mod/mod_autoindex.html">mod_autoindex</a></code>.</li>
    </ul>
    <p>The two functions are separated so that you can completely
    remove (or replace) automatic index generation should you want
    to.</p>

    <p>Automatic index generation is enabled with using
    <code>Options +Indexes</code>. See the
    <code class="directive"><a href="../mod/core.html#options">Options</a></code> directive for
    more details.</p>

    <p>If the <code><a href="#indexoptions.fancyindexing">FancyIndexing</a></code> option is given with the <code class="directive"><a href="#indexoptions">IndexOptions</a></code> directive,
    the column headers are links that control the order of the
    display. If you select a header link, the listing will be
    regenerated, sorted by the values in that column. Selecting the
    same header repeatedly toggles between ascending and descending
    order. These column header links are suppressed with
    <code class="directive"><a href="#indexoptions">IndexOptions</a></code> directive's
    <code>SuppressColumnSorting</code> option.</p>

    <p>Note that when the display is sorted by "Size", it's the
    <em>actual</em> size of the files that's used, not the
    displayed value - so a 1010-byte file will always be displayed
    before a 1011-byte file (if in ascending order) even though
    they both are shown as "1K".</p>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#addalt">AddAlt</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#addaltbyencoding">AddAltByEncoding</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#addaltbytype">AddAltByType</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#adddescription">AddDescription</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#addicon">AddIcon</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#addiconbyencoding">AddIconByEncoding</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#addiconbytype">AddIconByType</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#defaulticon">DefaultIcon</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#headername">HeaderName</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#indexignore">IndexIgnore</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#indexoptions">IndexOptions</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#indexorderdefault">IndexOrderDefault</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#readmename">ReadmeName</a></li>
</ul>
<h3>Topics</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#query">Autoindex Request Query Arguments</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="query" id="query">Autoindex Request Query Arguments</a></h2>
    

    <p>Apache 2.0.23 reorganized the Query Arguments for Column
    Sorting, and introduced an entire group of new query options.
    To effectively eliminate all client control over the output,
    the <code><a href="#indexoptions.ignoreclient">IndexOptions
    IgnoreClient</a></code> option was introduced.</p>

    <p>The column sorting headers themselves are self-referencing
    hyperlinks that add the sort query options shown below. Any
    option below may be added to any request for the directory
    resource.</p>

    <ul>
      <li><code>C=N</code> sorts the directory by file name</li>

      <li><code>C=M</code> sorts the directory by last-modified
      date, then file name</li>

      <li><code>C=S</code> sorts the directory by size, then file
      name</li>

      <li class="separate"><code>C=D</code> sorts the directory by description, then
      file name</li>

      <li><code>O=A</code> sorts the listing in Ascending
      Order</li>

      <li class="separate"><code>O=D</code> sorts the listing in Descending
      Order</li>

      <li><code>F=0</code> formats the listing as a simple list
      (not FancyIndexed)</li>

      <li><code>F=1</code> formats the listing as a FancyIndexed
      list</li>

      <li class="separate"><code>F=2</code> formats the listing as an
      HTMLTable FancyIndexed list</li>

      <li><code>V=0</code> disables version sorting</li>

      <li class="separate"><code>V=1</code> enables version sorting</li>

      <li><code>P=<var>pattern</var></code> lists only files matching
      the given <var>pattern</var></li>
    </ul>

    <p>Note that the 'P'attern query argument is tested
    <em>after</em> the usual <code class="directive"><a href="#indexignore">IndexIgnore</a></code> directives are processed,
    and all file names are still subjected to the same criteria as
    any other autoindex listing. The Query Arguments parser in
    <code class="module"><a href="../mod/mod_autoindex.html">mod_autoindex</a></code> will stop abruptly when an unrecognized
    option is encountered. The Query Arguments must be well formed,
    according to the table above.</p>

    <p>The simple example below, which can be clipped and saved in
    a header.html file, illustrates these query options. Note that
    the unknown "X" argument, for the submit button, is listed last
    to assure the arguments are all parsed before mod_autoindex
    encounters the X=Go input.</p>

    <div class="example"><p><code>
      &lt;form action="" method="get"&gt;<br />
      <span class="indent">
        Show me a &lt;select name="F"&gt;<br />
        <span class="indent">
          &lt;option value="0"&gt; Plain list&lt;/option&gt;<br />
          &lt;option value="1" selected="selected"&gt; Fancy list&lt;/option&gt;<br />
          &lt;option value="2"&gt; Table list&lt;/option&gt;<br />
        </span>
        &lt;/select&gt;<br />
        Sorted by &lt;select name="C"&gt;<br />
        <span class="indent">
          &lt;option value="N" selected="selected"&gt; Name&lt;/option&gt;<br />
          &lt;option value="M"&gt; Date Modified&lt;/option&gt;<br />
          &lt;option value="S"&gt; Size&lt;/option&gt;<br />
          &lt;option value="D"&gt; Description&lt;/option&gt;<br />
        </span>
        &lt;/select&gt;<br />
        &lt;select name="O"&gt;<br />
        <span class="indent">
          &lt;option value="A" selected="selected"&gt; Ascending&lt;/option&gt;<br />
          &lt;option value="D"&gt; Descending&lt;/option&gt;<br />
        </span>
        &lt;/select&gt;<br />
        &lt;select name="V"&gt;<br />
        <span class="indent">
          &lt;option value="0" selected="selected"&gt; in Normal order&lt;/option&gt;<br />
          &lt;option value="1"&gt; in Version order&lt;/option&gt;<br />
        </span>
        &lt;/select&gt;<br />
        Matching &lt;input type="text" name="P" value="*" /&gt;<br />
        &lt;input type="submit" name="X" value="Go" /&gt;<br />
      </span>
      &lt;/form&gt;
    </code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AddAlt" id="AddAlt">AddAlt</a> <a name="addalt" id="addalt">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Alternate text to display for a file, instead of an
icon selected by filename</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AddAlt <var>string</var> <var>file</var> [<var>file</var>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>Indexes</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_autoindex</td></tr>
</table>
    <p><code class="directive">AddAlt</code> provides the alternate text to
    display for a file, instead of an icon, for <code><a href="#indexoptions.fancyindexing">FancyIndexing</a></code>.
    <var>File</var> is a file extension, partial filename, wild-card
    expression or full filename for files to describe.
    If <var>String</var> contains any whitespace, you have to enclose it
    in quotes (<code>"</code> or <code>'</code>). This alternate text
    is displayed if the client is image-incapable, has image loading
    disabled, or fails to retrieve the icon.</p>

    <div class="example"><h3>Examples</h3><p><code>
      AddAlt "PDF file" *.pdf<br />
      AddAlt Compressed *.gz *.zip *.Z
    </code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AddAltByEncoding" id="AddAltByEncoding">AddAltByEncoding</a> <a name="addaltbyencoding" id="addaltbyencoding">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Alternate text to display for a file instead of an icon
selected by MIME-encoding</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AddAltByEncoding <var>string</var> <var>MIME-encoding</var>
[<var>MIME-encoding</var>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>Indexes</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_autoindex</td></tr>
</table>
    <p><code class="directive">AddAltByEncoding</code> provides the alternate
    text to display for a file, instead of an icon, for <code><a href="#indexoptions.fancyindexing">FancyIndexing</a></code>.
    <var>MIME-encoding</var> is a valid content-encoding, such as
    <code>x-compress</code>. If <var>String</var> contains any whitespace,
    you have to enclose it in quotes (<code>"</code> or <code>'</code>).
    This alternate text is displayed if the client is image-incapable,
    has image loading disabled, or fails to retrieve the icon.</p>

    <div class="example"><h3>Example</h3><p><code>
      AddAltByEncoding gzip x-gzip
    </code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AddAltByType" id="AddAltByType">AddAltByType</a> <a name="addaltbytype" id="addaltbytype">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Alternate text to display for a file, instead of an
icon selected by MIME content-type</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AddAltByType <var>string</var> <var>MIME-type</var>
[<var>MIME-type</var>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>Indexes</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_autoindex</td></tr>
</table>
    <p><code class="directive">AddAltByType</code> sets the alternate text to
    display for a file, instead of an icon, for <code><a href="#indexoptions.fancyindexing">FancyIndexing</a></code>.
    <var>MIME-type</var> is a valid content-type, such as
    <code>text/html</code>. If <var>String</var> contains any whitespace,
    you have to enclose it in quotes (<code>"</code> or <code>'</code>).
    This alternate text is displayed if the client is image-incapable,
    has image loading disabled, or fails to retrieve the icon.</p>

    <div class="example"><h3>Example</h3><p><code>
      AddAltByType 'plain text' text/plain
    </code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AddDescription" id="AddDescription">AddDescription</a> <a name="adddescription" id="adddescription">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Description to display for a file</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AddDescription <var>string file</var> [<var>file</var>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>Indexes</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_autoindex</td></tr>
</table>
    <p>This sets the description to display for a file, for
    <code><a href="#indexoptions.fancyindexing">FancyIndexing</a></code>.
    <var>File</var> is a file extension, partial filename, wild-card
    expression or full filename for files to describe.
    <var>String</var> is enclosed in double quotes (<code>"</code>).</p>

    <div class="example"><h3>Example</h3><p><code>
      AddDescription "The planet Mars" /web/pics/mars.gif
    </code></p></div>

    <p>The typical, default description field is 23 bytes wide. 6
    more bytes are added by the <code><a href="#indexoptions.suppressicon">IndexOptions SuppressIcon</a></code> option, 7 bytes are
    added by the <code><a href="#indexoptions.suppresssize">IndexOptions SuppressSize</a></code> option, and 19 bytes are
    added by the <code><a href="#indexoptions.suppresslastmodified">IndexOptions SuppressLastModified</a></code> option.
    Therefore, the widest default the description column is ever
    assigned is 55 bytes.</p>

    <p>See the <a href="#indexoptions.descriptionwidth">DescriptionWidth</a> <code class="directive"><a href="#indexoptions">IndexOptions</a></code> keyword for details on overriding the size
    of this column, or allowing descriptions of unlimited length.</p>

    <div class="note"><h3>Caution</h3>
      <p>Descriptive text defined with <code class="directive">AddDescription</code>
      may contain HTML markup, such as tags and character entities. If the
      width of the description column should happen to truncate a tagged
      element (such as cutting off the end of a bolded phrase), the
      results may affect the rest of the directory listing.</p>
    </div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AddIcon" id="AddIcon">AddIcon</a> <a name="addicon" id="addicon">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Icon to display for a file selected by name</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AddIcon <var>icon</var> <var>name</var> [<var>name</var>]
...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>Indexes</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_autoindex</td></tr>
</table>
    <p>This sets the icon to display next to a file ending in
    <var>name</var> for <code><a href="#indexoptions.fancyindexing">FancyIndexing</a></code>. <var>Icon</var> is either a (%-escaped)
    relative URL to the icon, a fully qualified remote URL, or of the format <code>
    (<var>alttext</var>,<var>url</var>)</code> where <var>alttext</var>
    is the text tag given for an icon for non-graphical browsers.</p>

    <p><var>Name</var> is either <code>^^DIRECTORY^^</code> for directories,
    <code>^^BLANKICON^^</code> for blank lines (to format the list
    correctly), a file extension, a wildcard expression, a partial
    filename or a complete filename.</p>

    <p><code>^^BLANKICON^^</code> is only used for formatting, and so
    is unnecessary if you're using <code>IndexOptions
    HTMLTable</code>.</p>

    <div class="example"><h3>Examples</h3><p><code>
      AddIcon (IMG,/icons/image.xbm) .gif .jpg .xbm<br />
      AddIcon /icons/dir.xbm ^^DIRECTORY^^<br />
      AddIcon /icons/backup.xbm *~
    </code></p></div>

    <p><code class="directive"><a href="#addiconbytype">AddIconByType</a></code>
    should be used in preference to <code class="directive">AddIcon</code>,
    when possible.</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="AddIconByEncoding" id="AddIconByEncoding">AddIconByEncoding</a> <a name="addiconbyencoding" id="addiconbyencoding">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Icon to display next to files selected by MIME
content-encoding</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AddIconByEncoding <var>icon</var> <var>MIME-encoding</var>
[<var>MIME-encoding</var>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>Indexes</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_autoindex</td></tr>
</table>
    <p>This sets the icon to display next to files with <code><a href="#indexoptions.fancyindexing">FancyIndexing</a></code>.
    <var>Icon</var> is either a (%-escaped) relative URL to the icon,
    a fully qualified remote URL,
    or of the format <code>(<var>alttext</var>,<var>url</var>)</code>
    where <var>alttext</var> is the text tag given for an icon for
    non-graphical browsers.</p>

    <p><var>MIME-encoding</var> is a wildcard expression matching
    required the content-encoding.</p>

    <div class="example"><h3>Example</h3><p><code>
      AddIconByEncoding /icons/compress.xbm x-compress
    </code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AddIconByType" id="AddIconByType">AddIconByType</a> <a name="addiconbytype" id="addiconbytype">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Icon to display next to files selected by MIME
content-type</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AddIconByType <var>icon</var> <var>MIME-type</var>
[<var>MIME-type</var>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>Indexes</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_autoindex</td></tr>
</table>
    <p>This sets the icon to display next to files of type
    <var>MIME-type</var> for <code><a href="#indexoptions.fancyindexing">FancyIndexing</a></code>.
    <var>Icon</var> is either a (%-escaped) relative URL to the icon,
    a fully qualified remote URL,
    or of the format <code>(<var>alttext</var>,<var>url</var>)</code>
    where <var>alttext</var> is the text tag given for an icon for
    non-graphical browsers.</p>

    <p><var>MIME-type</var> is a wildcard expression matching
    required the mime types.</p>

    <div class="example"><h3>Example</h3><p><code>
      AddIconByType (IMG,/icons/image.xbm) image/*
    </code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="DefaultIcon" id="DefaultIcon">DefaultIcon</a> <a name="defaulticon" id="defaulticon">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Icon to display for files when no specific icon is
configured</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>DefaultIcon <var>url-path</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>Indexes</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_autoindex</td></tr>
</table>
    <p>The <code class="directive">DefaultIcon</code> directive sets the icon
    to display for files when no specific icon is known, for <code><a href="#indexoptions.fancyindexing">FancyIndexing</a></code>.
    <var>Url-path</var> is a (%-escaped) relative URL to the icon,
    or a fully qualified remote URL.</p>

    <div class="example"><h3>Example</h3><p><code>
      DefaultIcon /icon/unknown.xbm
    </code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="HeaderName" id="HeaderName">HeaderName</a> <a name="headername" id="headername">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Name of the file that will be inserted at the top
of the index listing</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>HeaderName <var>filename</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>Indexes</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_autoindex</td></tr>
</table>
    <p>The <code class="directive">HeaderName</code> directive sets the name
    of the file that will be inserted at the top of the index
    listing. <var>Filename</var> is the name of the file to include.</p>

    <div class="example"><h3>Example</h3><p><code>
      HeaderName HEADER.html
    </code></p></div>

    <div class="note">
      <p>Both HeaderName and <code class="directive"><a href="#readmename">ReadmeName</a></code> now treat
      <var>Filename</var> as a URI path relative to the one used to
      access the directory being indexed. If <var>Filename</var> begins
      with a slash, it will be taken to be relative to the <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code>.</p>

      <div class="example"><h3>Example</h3><p><code>
        HeaderName /include/HEADER.html
      </code></p></div>

      <p><var>Filename</var> must resolve to a document with a major
      content type of <code>text/*</code> (<em>e.g.</em>,
      <code>text/html</code>, <code>text/plain</code>, etc.). This means
      that <var>filename</var> may refer to a CGI script if the script's
      actual file type (as opposed to its output) is marked as
      <code>text/html</code> such as with a directive like:</p>

      <div class="example"><p><code>
        AddType text/html .cgi
      </code></p></div>

      <p><a href="../content-negotiation.html">Content negotiation</a>
      will be performed if <code class="directive"><a href="../mod/core.html#options">Options</a></code>
      <code>MultiViews</code> is in effect. If <var>filename</var> resolves
      to a static <code>text/html</code> document (not a CGI script) and
      either one of the <code class="directive"><a href="../mod/core.html#options">options</a></code>
      <code>Includes</code> or <code>IncludesNOEXEC</code> is enabled,
      the file will be processed for server-side includes (see the
      <code class="module"><a href="../mod/mod_include.html">mod_include</a></code> documentation).</p>
    </div>

    <p>If the file specified by <code class="directive">HeaderName</code> contains
    the beginnings of an HTML document (&lt;html&gt;, &lt;head&gt;, etc.)
    then you will probably want to set <a href="#indexoptions.suppresshtmlpreamble"><code>IndexOptions
    +SuppressHTMLPreamble</code></a>, so that these tags are not
    repeated.</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="IndexIgnore" id="IndexIgnore">IndexIgnore</a> <a name="indexignore" id="indexignore">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Adds to the list of files to hide when listing
a directory</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>IndexIgnore <var>file</var> [<var>file</var>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>IndexIgnore "."</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>Indexes</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_autoindex</td></tr>
</table>
    <p>The <code class="directive">IndexIgnore</code> directive adds to the
    list of files to hide when listing a directory. <var>File</var> is a
    shell-style wildcard expression or full
    filename. Multiple IndexIgnore directives add
    to the list, rather than the replacing the list of ignored
    files. By default, the list contains <code>.</code> (the current
    directory).</p>

    <div class="example"><p><code>
      IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
    </code></p></div>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="IndexOptions" id="IndexOptions">IndexOptions</a> <a name="indexoptions" id="indexoptions">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Various configuration settings for directory
indexing</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>IndexOptions  [+|-]<var>option</var> [[+|-]<var>option</var>]
...</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>By default, no options are enabled.</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>Indexes</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_autoindex</td></tr>
</table>
    <p>The <code class="directive">IndexOptions</code> directive specifies the
    behavior of the directory indexing. <var>Option</var> can be one
    of</p>

    <dl>
      <dt><a name="indexoptions.charset" id="indexoptions.charset">Charset=<var>character-set</var></a> (<em>Apache 2.0.61 and
      later</em>)</dt>

      <dd>The <code>Charset</code> keyword allows you to
      specify the character set of the generated page. The
      default is either <var>ISO-8859-1</var> or <var>UTF-8</var>,
      depending on whether the underlying file system is unicode
      or not.

      <div class="example"><h3>Example:</h3><p><code>
        IndexOptions Charset=UTF-8
      </code></p></div>
      </dd>

      <dt><a name="indexoptions.type" id="indexoptions.type">Type=<var>MIME content-type</var></a> (<em>Apache 2.0.61 and
      later</em>)</dt>

      <dd>The <code>Type</code> keyword allows you to
      specify the MIME content-type of the generated page. The default
      is <var>text/html</var>.

      <div class="example"><h3>Example:</h3><p><code>
        IndexOptions Type=text/plain
      </code></p></div>
      </dd>

      <dt><a name="indexoptions.descriptionwidth" id="indexoptions.descriptionwidth">DescriptionWidth=[<var>n</var> | *]</a> (<em>Apache 2.0.23 and
      later</em>)</dt>

      <dd>The <code>DescriptionWidth</code> keyword allows you to
      specify the width of the description column in
      characters.</dd>

      <dd><code>-DescriptionWidth</code> (or unset) allows
      <code class="module"><a href="../mod/mod_autoindex.html">mod_autoindex</a></code> to calculate the best width.</dd>

      <dd><code>DescriptionWidth=<var>n</var></code> fixes the column width to
      <var>n</var> bytes wide.</dd>

      <dd><code>DescriptionWidth=*</code> grows the column to the
      width necessary to accommodate the longest description
      string.</dd>

      <dd><strong>See the section on <code class="directive"><a href="#adddescription">AddDescription</a></code> for dangers
      inherent in truncating descriptions.</strong></dd>

      <dt><a name="indexoptions.fancyindexing" id="indexoptions.fancyindexing">FancyIndexing</a></dt>

      <dd>This turns on fancy indexing of directories.</dd>

      <dt><a name="indexoptions.foldersfirst" id="indexoptions.foldersfirst">FoldersFirst</a> (<em>Apache
      2.0.23 and later</em>)</dt>

      <dd>If this option is enabled, subdirectory listings will
      <em>always</em> appear first, followed by normal files in the
      directory. The listing is basically broken into two
      components, the files and the subdirectories, and each is
      sorted separately and then displayed subdirectories-first.
      For instance, if the sort order is descending by name, and
      <code>FoldersFirst</code> is enabled, subdirectory
      <code>Zed</code> will be listed before subdirectory
      <code>Beta</code>, which will be listed before normal files
      <code>Gamma</code> and <code>Alpha</code>. <strong>This option
      only has an effect if <a href="#indexoptions.fancyindexing"><code>FancyIndexing</code></a> is also enabled.</strong></dd>

      <dt><a name="indexoptions.htmltable" id="indexoptions.htmltable">HTMLTable</a> (<em>Experimental,
      Apache 2.0.23 and later</em>)</dt>

      <dd>This experimental option with <code>FancyIndexing</code>
      constructs a simple table for the fancy directory listing. Note this
      will confuse older browsers. It is particularly necessary if file
      names or description text will alternate between
      left-to-right and right-to-left reading order, as can happen
      on WinNT or other utf-8 enabled platforms.</dd>

      <dt><a name="indexoptions.iconsarelinks" id="indexoptions.iconsarelinks">IconsAreLinks</a></dt>

      <dd>This makes the icons part of the anchor for the filename, for
      fancy indexing.</dd>

      <dt><a name="indexoptions.iconheight" id="indexoptions.iconheight">IconHeight[=<var>pixels</var>]</a></dt>

      <dd>Presence of this option, when used with <code>IconWidth</code>,
      will cause the server to include <code>height</code> and
      <code>width</code> attributes in the <code>img</code> tag for the
      file icon. This allows browser to precalculate the page layout
      without having to wait until all the images have been loaded. If no
      value is given for the option, it defaults to the standard height of
      the icons supplied with the Apache software.</dd>

      <dt><a name="indexoptions.iconwidth" id="indexoptions.iconwidth">IconWidth[=<var>pixels</var>]</a></dt>

      <dd>Presence of this option, when used with <code>IconHeight</code>,
      will cause the server to include <code>height</code> and
      <code>width</code> attributes in the <code>img</code> tag for
      the file icon. This allows browser to precalculate the page
      layout without having to wait until all the images have been
      loaded. If no value is given for the option, it defaults to
      the standard width of the icons supplied with the Apache
      software.</dd>

      <dt><a name="indexoptions.ignorecase" id="indexoptions.ignorecase">IgnoreCase</a></dt>

      <dd>If this option is enabled, names are sorted in a case-insensitive
      manner.  For instance, if the sort order is ascending by name, and
      <code>IgnoreCase</code> is enabled, file Zeta  will be listed after
      file alfa (Note: file GAMMA will always be listed before file gamma).
      </dd>

      <dt><a name="indexoptions.ignoreclient" id="indexoptions.ignoreclient">IgnoreClient</a></dt>

      <dd>This option causes <code class="module"><a href="../mod/mod_autoindex.html">mod_autoindex</a></code> to ignore all
      query variables from the client, including sort order (implies
      <code><a href="#indexoptions.suppresscolumnsorting">SuppressColumnSorting</a></code>.)</dd>

      <dt><a name="indexoptions.namewidth" id="indexoptions.namewidth">NameWidth=[<var>n</var>
               | *]</a></dt>

      <dd>The <code>NameWidth</code> keyword allows you to specify the width
      of the filename column in bytes.</dd>

      <dd><code>-NameWidth</code> (or unset) allows <code class="module"><a href="../mod/mod_autoindex.html">mod_autoindex</a></code> to calculate the best width.</dd>

      <dd><code>NameWidth=<var>n</var></code> fixes the column width to
      <var>n</var> bytes wide.</dd>

      <dd><code>NameWidth=*</code> grows the column to the necessary
      width.</dd>

      <dt><a name="indexoptions.scanhtmltitles" id="indexoptions.scanhtmltitles">ScanHTMLTitles</a></dt>

      <dd>This enables the extraction of the title from HTML documents
      for fancy indexing. If the file does not have a description
      given by <code class="directive"><a href="#adddescription">AddDescription</a></code>
      then httpd will read the document for the value of the
      <code>title</code> element. This is CPU and disk intensive.</dd>

      <dt><a name="indexoptions.suppresscolumnsorting" id="indexoptions.suppresscolumnsorting">SuppressColumnSorting</a></dt>

      <dd>If specified, Apache will not make the column headings in a
      FancyIndexed directory listing into links for sorting. The
      default behavior is for them to be links; selecting the
      column heading will sort the directory listing by the values
      in that column. <strong>Prior to Apache 2.0.23, this also
      disabled parsing the Query Arguments for the sort
      string.</strong> That behavior is now controlled by <a href="#indexoptions.ignoreclient"><code>IndexOptions
      IgnoreClient</code></a> in Apache 2.0.23.</dd>

      <dt><a name="indexoptions.suppressdescription" id="indexoptions.suppressdescription">SuppressDescription</a></dt>

      <dd>This will suppress the file description in fancy indexing
      listings. By default, no file descriptions are defined, and
      so the use of this option will regain 23 characters of screen
      space to use for something else. See <code class="directive"><a href="#adddescription">AddDescription</a></code> for information about setting the file
      description. See also the <code><a href="#indexoptions.descriptionwidth">DescriptionWidth</a></code>
      index option to limit the size of the description column.</dd>

      <dt><a name="indexoptions.suppresshtmlpreamble" id="indexoptions.suppresshtmlpreamble">SuppressHTMLPreamble</a></dt>

      <dd>If the directory actually contains a file specified by the
      <code class="directive"><a href="#headername">HeaderName</a></code>
      directive, the module usually includes the contents of the file
      after a standard HTML preamble (<code>&lt;html&gt;</code>,
      <code>&lt;head&gt;</code>, <em>et cetera</em>). The
      <code>SuppressHTMLPreamble</code> option disables this behaviour,
      causing the module to start the display with the header file
      contents. The header file must contain appropriate HTML instructions
      in this case. If there is no header file, the preamble is generated
      as usual.</dd>

      <dt><a name="indexoptions.suppressicon" id="indexoptions.suppressicon">SuppressIcon</a> (<em>Apache
      2.0.23 and later</em>)</dt>

      <dd>This will suppress the icon in fancy indexing listings.
      Combining both <code>SuppressIcon</code> and
      <code>SuppressRules</code> yields proper HTML 3.2 output, which
      by the final specification prohibits <code>img</code> and
      <code>hr</code> elements from the <code>pre</code> block (used to
      format FancyIndexed listings.)</dd>

      <dt><a name="indexoptions.suppresslastmodified" id="indexoptions.suppresslastmodified">SuppressLastModified</a></dt>

      <dd>This will suppress the display of the last modification date,
      in fancy indexing listings.</dd>

      <dt><a name="indexoptions.suppressrules" id="indexoptions.suppressrules">SuppressRules</a>
      (<em>Apache 2.0.23 and later</em>)</dt>

      <dd>This will suppress the horizontal rule lines (<code>hr</code>
      elements) in directory listings. Combining both <code>SuppressIcon</code> and
      <code>SuppressRules</code> yields proper HTML 3.2 output, which
      by the final specification prohibits <code>img</code> and
      <code>hr</code> elements from the <code>pre</code> block (used to
      format FancyIndexed listings.)</dd>

      <dt><a name="indexoptions.suppresssize" id="indexoptions.suppresssize">SuppressSize</a></dt>

      <dd>This will suppress the file size in fancy indexing listings.</dd>

      <dt><a name="indexoptions.trackmodified" id="indexoptions.trackmodified">TrackModified</a> (<em>Apache
      2.0.23 and later</em>)</dt>

      <dd>This returns the <code>Last-Modified</code> and <code>ETag</code>
      values for the listed directory in the HTTP header. It is only valid
      if the operating system and file system return appropriate stat()
      results. Some Unix systems do so, as do OS2's JFS and Win32's
      NTFS volumes. OS2 and Win32 FAT volumes, for example, do not.
      Once this feature is enabled, the client or proxy can track
      changes to the list of files when they perform a <code>HEAD</code>
      request. Note some operating systems correctly track new and
      removed files, but do not track changes for sizes or dates of
      the files within the directory. <strong>Changes to the size
      or date stamp of an existing file will not update the
      <code>Last-Modified</code> header on all Unix platforms.</strong>
      If this is a concern, leave this option disabled.</dd>

      <dt><a name="indexoptions.versionsort" id="indexoptions.versionsort">VersionSort</a>
      (<em>Apache 2.0a3 and later</em>)</dt>

      <dd>The <code>VersionSort</code> keyword causes files containing
      version numbers to sort in a natural way. Strings are sorted as
      usual, except that substrings of digits in the name and
      description are compared according to their numeric value.

      <div class="example"><h3>Example:</h3><p><code>
        foo-1.7<br />
        foo-1.7.2<br />
        foo-1.7.12<br />
        foo-1.8.2<br />
        foo-1.8.2a<br />
        foo-1.12
      </code></p></div>

      <p>If the number starts with a zero, then it is considered to
      be a fraction:</p>

      <div class="example"><p><code>
        foo-1.001<br />
        foo-1.002<br />
        foo-1.030<br />
        foo-1.04
      </code></p></div>
      </dd>

      <dt><a name="indexoptions.xhtml" id="indexoptions.xhtml">XHTML</a>
      (<em>Apache 2.0.49 and later</em>)</dt>

      <dd>The <code>XHTML</code> keyword forces <code class="module"><a href="../mod/mod_autoindex.html">mod_autoindex</a></code>
      to emit XHTML 1.0 code instead of HTML 3.2.</dd>
    </dl>

   
   <dl><dt>Incremental IndexOptions</dt>
   <dd>
     <p>Apache 1.3.3 introduced some significant changes in the
     handling of <code class="directive">IndexOptions</code> directives. In
     particular:</p>

     <ul>
     <li>Multiple <code class="directive">IndexOptions</code> directives for a
     single directory are now merged together. The result of:

     <div class="example"><p><code>
       &lt;Directory /foo&gt;
       <span class="indent">
         IndexOptions HTMLTable<br />
         IndexOptions SuppressColumnsorting
       </span>
       &lt;/Directory&gt;
     </code></p></div>

     <p>will be the equivalent of</p>

     <div class="example"><p><code>
       IndexOptions HTMLTable SuppressColumnsorting
     </code></p></div>
     </li>

     <li>The addition of the incremental syntax (<em>i.e.</em>, prefixing
     keywords with <code>+</code> or <code>-</code>).</li>
     </ul>

     <p>Whenever a '+' or '-' prefixed keyword is encountered, it
     is applied to the current <code class="directive">IndexOptions</code>
     settings (which may have been inherited from an upper-level
     directory). However, whenever an unprefixed keyword is processed, it
     clears all inherited options and any incremental settings encountered
     so far. Consider the following example:</p>

     <div class="example"><p><code>
       IndexOptions +ScanHTMLTitles -IconsAreLinks FancyIndexing<br />
       IndexOptions +SuppressSize
     </code></p></div>

     <p>The net effect is equivalent to <code>IndexOptions FancyIndexing
     +SuppressSize</code>, because the unprefixed <code>FancyIndexing</code>
     discarded the incremental keywords before it, but allowed them to
     start accumulating again afterward.</p>

     <p>To unconditionally set the <code class="directive">IndexOptions</code> for
     a particular directory, clearing the inherited settings, specify
     keywords without any <code>+</code> or <code>-</code> prefixes.</p>
   </dd>
   </dl>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="IndexOrderDefault" id="IndexOrderDefault">IndexOrderDefault</a> <a name="indexorderdefault" id="indexorderdefault">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Sets the default ordering of the directory index</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>IndexOrderDefault Ascending|Descending
Name|Date|Size|Description</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>IndexOrderDefault Ascending Name</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>Indexes</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_autoindex</td></tr>
</table>
    <p>The <code class="directive">IndexOrderDefault</code> directive is used
    in combination with the <code><a href="#indexoptions.fancyindexing">FancyIndexing</a></code> index option. By default, fancyindexed
    directory listings are displayed in ascending order by filename; the
    <code class="directive">IndexOrderDefault</code> allows you to change this
    initial display order.</p>

    <p><code class="directive">IndexOrderDefault</code> takes two
    arguments. The first must be either <code>Ascending</code> or
    <code>Descending</code>, indicating the direction of the sort.
    The second argument must be one of the keywords <code>Name</code>,
    <code>Date</code>, <code>Size</code>, or <code>Description</code>,
    and identifies the primary key. The secondary key is
    <em>always</em> the ascending filename.</p>

    <p>You can, if desired, prevent the client from reordering the list
    by also adding the <code><a href="#indexoptions.suppresscolumnsorting">SuppressColumnSorting</a></code> 
    index option to remove the sort link from the top of the column,
    along with the <code><a href="#indexoptions.ignoreclient">IgnoreClient</a></code> index
    option to prevent them from manually adding sort options to the
    query string in order to override your ordering preferences.</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="ReadmeName" id="ReadmeName">ReadmeName</a> <a name="readmename" id="readmename">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Name of the file that will be inserted at the end
of the index listing</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ReadmeName <var>filename</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>Indexes</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Base</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_autoindex</td></tr>
</table>
    <p>The <code class="directive">ReadmeName</code> directive sets the name
    of the file that will be appended to the end of the index
    listing. <var>Filename</var> is the name of the file to include, and
    is taken to be relative to the location being indexed. If
    <var>Filename</var> begins with a slash, it will be taken to be
    relative to the <code class="directive"><a href="../mod/core.html#documentroot">DocumentRoot</a></code>.
    </p>

    <div class="example"><h3>Example</h3><p><code>
      ReadmeName FOOTER.html
    </code></p></div>

    <div class="example"><h3>Example 2</h3><p><code>
      ReadmeName /include/FOOTER.html
    </code></p></div>

    <p>See also <code class="directive"><a href="#headername">HeaderName</a></code>, where this behavior is described in greater
    detail.</p>

</div>
</div>
<div class="bottomlang">
<p><span>Available Languages: </span><a href="../en/mod/mod_autoindex.html" title="English">&nbsp;en&nbsp;</a> |
<a href="../ja/mod/mod_autoindex.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
<a href="../ko/mod/mod_autoindex.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="../tr/mod/mod_autoindex.html" hreflang="tr" rel="alternate" title="T&#252;rk&#231;e">&nbsp;tr&nbsp;</a></p>
</div><div id="footer">
<p class="apache">Copyright 2013 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>