| <?xml version="1.0"?> |
| <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> |
| <?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?> |
| <!-- $Revision: 1.11 $ --> |
| |
| <!-- |
| Copyright 2002-2004 The Apache Software Foundation |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); |
| you may not use this file except in compliance with the License. |
| You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| |
| <modulesynopsis metafile="mod_dir.xml.meta"> |
| <name>mod_dir</name> |
| <description>Provides for "trailing slash" redirects and |
| serving directory index files</description> |
| <status>Base</status> |
| <sourcefile>mod_dir.c</sourcefile> |
| <identifier>dir_module</identifier> |
| |
| <summary> |
| <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 <directive module="mod_dir" |
| >DirectoryIndex</directive> directive sets the |
| name of this file. This is controlled by |
| <module>mod_dir</module>.</li> |
| |
| <li>Otherwise, a listing generated by the server. This is |
| provided by <module>mod_autoindex</module>.</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>A "trailing slash" redirect is issued when the server |
| receives a request for a URL |
| <code>http://servername/foo/dirname</code> where |
| <code>dirname</code> is a directory. Directories require a |
| trailing slash, so <module>mod_dir</module> issues a redirect to |
| <code>http://servername/foo/dirname/</code>.</p> |
| </summary> |
| |
| <directivesynopsis> |
| <name>DirectoryIndex</name> |
| <description>List of resources to look for when the client requests |
| a directory</description> |
| <syntax>DirectoryIndex |
| <var>local-url</var> [<var>local-url</var>] ...</syntax> |
| <default>DirectoryIndex index.html</default> |
| <contextlist><context>server config</context><context>virtual host</context> |
| <context>directory</context><context>.htaccess</context></contextlist> |
| <override>Indexes</override> |
| |
| <usage> |
| <p>The <directive>DirectoryIndex</directive> directive sets the |
| list of resources to look for, when the client requests an index |
| of the directory by specifying a / at the end of the directory |
| name. <var>Local-url</var> is the (%-encoded) URL of a document on |
| the server relative to the requested directory; it is usually the |
| name of a file in the directory. Several URLs may be given, in |
| which case the server will return the first one that it finds. If |
| none of the resources exist and the <code>Indexes</code> option is |
| set, the server will generate its own listing of the |
| directory.</p> |
| |
| <example><title>Example</title> |
| DirectoryIndex index.html |
| </example> |
| |
| <p>then a request for <code>http://myserver/docs/</code> would |
| return <code>http://myserver/docs/index.html</code> if it |
| exists, or would list the directory if it did not.</p> |
| |
| <p>Note that the documents do not need to be relative to the |
| directory;</p> |
| |
| <example> |
| DirectoryIndex index.html index.txt /cgi-bin/index.pl |
| </example> |
| |
| <p>would cause the CGI script <code>/cgi-bin/index.pl</code> to be |
| executed if neither <code>index.html</code> or <code>index.txt</code> |
| existed in a directory.</p> |
| </usage> |
| </directivesynopsis> |
| |
| <directivesynopsis> |
| <name>DirectorySlash</name> |
| <description>Toggle trailing slash redirects on or off</description> |
| <syntax>DirectorySlash On|Off</syntax> |
| <default>DirectorySlash On</default> |
| <contextlist><context>server config</context><context>virtual host</context> |
| <context>directory</context><context>.htaccess</context></contextlist> |
| <override>Indexes</override> |
| <compatibility>Available in version 2.1 and later</compatibility> |
| |
| <usage> |
| <p>The <directive>DirectorySlash</directive> directive determines, whether |
| <module>mod_dir</module> should fixup URLs pointing to a directory or |
| not.</p> |
| |
| <p>Typically if a user requests a resource without a trailing slash, which |
| points to a directory, <module>mod_dir</module> redirects him to the same |
| ressource, but <em>with</em> trailing slash for some good reasons:</p> |
| |
| <ul> |
| <li>The user is finally requesting the canonical URL of the resource</li> |
| <li><module>mod_autoindex</module> works correctly. Since it doesn't emit |
| the path in the link, it would point to the wrong path.</li> |
| <li><directive module="mod_dir">DirectoryIndex</directive> will be evaluated |
| <em>only</em> for directories requested with trailing slash.</li> |
| <li>Relative URL references inside html pages will work correctly.</li> |
| </ul> |
| |
| <p>Well, if you don't want this effect <em>and</em> the reasons above don't |
| apply to you, you can turn off the redirect with:</p> |
| |
| <example> |
| # see security warning below!<br /> |
| <Location /some/path><br /> |
| <indent> |
| DirectorySlash Off<br /> |
| SetHandler some-handler<br /> |
| </indent> |
| </Location> |
| </example> |
| |
| <note type="warning"><title>Security Warning</title> |
| <p>Turning off the trailing slash redirect may result in an information |
| disclosure. Consider a situation where <module>mod_autoindex</module> is |
| active (<code>Options +Indexes</code>) and <directive module="mod_dir" |
| >DirectoryIndex</directive> is set to a valid resource (say, |
| <code>index.html</code>) and there's no other special handler defined for |
| that URL. In this case a request with a trailing slash would show the |
| <code>index.html</code> file. <strong>But a request without trailing slash |
| would list the directory contents</strong>.</p> |
| </note> |
| </usage> |
| </directivesynopsis> |
| |
| </modulesynopsis> |