<title>core - 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="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="../style/css/prettify.css" />
+<script src="../style/scripts/prettify.js" type="text/javascript">
+</script>
+
<link href="../images/favicon.ico" rel="shortcut icon" /></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.3</p>
+<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
+<p class="apache">Apache HTTP Server Version 2.5</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./"><img title="<-" alt="<-" src="../images/left.gif" /></a></div>
<div id="path">
-<a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">HTTP Server</a> > <a href="http://httpd.apache.org/docs/">Documentation</a> > <a href="../">Version 2.3</a> > <a href="./">Modules</a></div>
+<a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">HTTP Server</a> > <a href="http://httpd.apache.org/docs/">Documentation</a> > <a href="../">Version 2.5</a> > <a href="./">Modules</a></div>
<div id="page-content">
<div id="preamble"><h1>Apache Core Features</h1>
<div class="toplang">
<li><img alt="" src="../images/down.gif" /> <a href="#adddefaultcharset">AddDefaultCharset</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#allowencodedslashes">AllowEncodedSlashes</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#allowoverride">AllowOverride</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#allowoverridelist">AllowOverrideList</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#cgimapextension">CGIMapExtension</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#contentdigest">ContentDigest</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#defaultruntimedir">DefaultRuntimeDir</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#defaulttype">DefaultType</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#define">Define</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#directory"><Directory></a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#directorymatch"><DirectoryMatch></a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#documentroot">DocumentRoot</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#else"><Else></a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#elseif"><ElseIf></a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#enablemmap">EnableMMAP</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#enablesendfile">EnableSendfile</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#error">Error</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#ifdefine"><IfDefine></a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#ifmodule"><IfModule></a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#include">Include</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#includeoptional">IncludeOptional</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#keepalive">KeepAlive</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#keepalivetimeout">KeepAliveTimeout</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#limit"><Limit></a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#locationmatch"><LocationMatch></a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#loglevel">LogLevel</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#maxkeepaliverequests">MaxKeepAliveRequests</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#maxrangeoverlaps">MaxRangeOverlaps</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#maxrangereversals">MaxRangeReversals</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#maxranges">MaxRanges</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#mutex">Mutex</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#namevirtualhost">NameVirtualHost</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#options">Options</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#protocol">Protocol</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#registerhttpmethod">RegisterHttpMethod</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#rlimitcpu">RLimitCPU</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#rlimitmem">RLimitMEM</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#rlimitnproc">RLimitNPROC</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#usecanonicalphysicalport">UseCanonicalPhysicalPort</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#virtualhost"><VirtualHost></a></li>
</ul>
-</div>
+<ul class="seealso"><li><a href="#comments_section">Comments</a></li></ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AcceptFilter" id="AcceptFilter">AcceptFilter</a> <a name="acceptfilter" id="acceptfilter">Directive</a></h2>
On Windows from Apache httpd 2.3.3 and later.</td></tr>
</table>
<p>This directive enables operating system specific optimizations for a
- listening socket by the <code class="directive">Protocol</code>type.
+ listening socket by the <code class="directive">Protocol</code> type.
The basic premise is for the kernel to not send a socket to the server
process until either data is received or an entire HTTP Request is buffered.
Only <a href="http://www.freebsd.org/cgi/man.cgi?query=accept_filter&sektion=9">
<p>Using <code>none</code> for an argument will disable any accept filters
for that protocol. This is useful for protocols that require a server
send data first, such as <code>ftp:</code> or <code>nntp</code>:</p>
- <div class="example"><p><code>AcceptFilter nntp none</code></p></div>
+ <pre class="prettyprint lang-config">
+ AcceptFilter nntp none
+ </pre>
+
<p>The default protocol names are <code>https</code> for port 443
and <code>http</code> for all other ports. To specify another protocol
directive.</p>
<p>The default values on FreeBSD are:</p>
- <div class="example"><p><code>
- AcceptFilter http httpready <br />
- AcceptFilter https dataready
- </code></p></div>
+ <pre class="prettyprint lang-config">
+AcceptFilter http httpready
+AcceptFilter https dataready
+ </pre>
+
<p>The <code>httpready</code> accept filter buffers entire HTTP requests at
the kernel level. Once an entire request is received, the kernel then
accf_data(9)</a> filter is used.</p>
<p>The default values on Linux are:</p>
- <div class="example"><p><code>
- AcceptFilter http data <br />
- AcceptFilter https data
- </code></p></div>
+ <pre class="prettyprint lang-config">
+AcceptFilter http data
+AcceptFilter https data
+ </pre>
+
<p>Linux's <code>TCP_DEFER_ACCEPT</code> does not support buffering http
requests. Any value besides <code>none</code> will enable
tcp(7)</a> man page.</p>
<p>The default values on Windows are:</p>
- <div class="example"><p><code>
- AcceptFilter http data <br />
- AcceptFilter https data
- </code></p></div>
+ <pre class="prettyprint lang-config">
+AcceptFilter http data
+AcceptFilter https data
+ </pre>
+
<p>Window's mpm_winnt interprets the AcceptFilter to toggle the AcceptEx()
API, and does not support http protocol buffering. There are two values
<h3>See also</h3>
<ul>
-<li><code class="directive">Protocol</code></li>
+<li><code class="directive"><a href="#protocol">Protocol</a></code></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
the request, so you can use the following configuration to enable
such a script:</p>
- <div class="example"><p><code>
- <Files "mypaths.shtml"><br />
- <span class="indent">
- Options +Includes<br />
- SetOutputFilter INCLUDES<br />
- AcceptPathInfo On<br />
- </span>
- </Files>
- </code></p></div>
+ <pre class="prettyprint lang-config">
+<Files "mypaths.shtml">
+ Options +Includes
+ SetOutputFilter INCLUDES
+ AcceptPathInfo On
+</Files>
+ </pre>
+
</div>
configuration files are <a href="#allowoverride">enabled for that
directory</a>. For example:</p>
- <div class="example"><p><code>
- AccessFileName .acl
- </code></p></div>
+ <pre class="prettyprint lang-config">AccessFileName .acl</pre>
+
<p>before returning the document
<code>/usr/local/web/index.html</code>, the server will read
<code>/usr/local/.acl</code> and <code>/usr/local/web/.acl</code>
for directives, unless they have been disabled with</p>
- <div class="example"><p><code>
- <Directory /><br />
- <span class="indent">
- AllowOverride None<br />
- </span>
- </Directory>
- </code></p></div>
+ <pre class="prettyprint lang-config">
+<Directory />
+ AllowOverride None
+</Directory>
+ </pre>
+
<h3>See also</h3>
<ul>
charset values</a> for use in Internet media types (MIME types).
For example:</p>
- <div class="example"><p><code>
- AddDefaultCharset utf-8
- </code></p></div>
+ <pre class="prettyprint lang-config">AddDefaultCharset utf-8</pre>
+
<p><code class="directive">AddDefaultCharset</code> should only be used when all
of the text resources to which it applies are known to be in that
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Determines whether encoded path separators in URLs are allowed to
be passed through</td></tr>
-<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AllowEncodedSlashes On|Off</code></td></tr>
+<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AllowEncodedSlashes On|Off|NoDecode</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>AllowEncodedSlashes Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Core</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>core</td></tr>
-<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache httpd 2.0.46 and later</td></tr>
+<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache httpd 2.0.46 and later.
+NoDecode option available in 2.3.12 and later.</td></tr>
</table>
<p>The <code class="directive">AllowEncodedSlashes</code> directive allows URLs
which contain encoded path separators (<code>%2F</code> for <code>/</code>
and additionally <code>%5C</code> for <code>\</code> on according systems)
- to be used. Normally such URLs are refused with a 404 (Not found) error.</p>
+ to be used in the path info.</p>
+
+ <p>With the default value, <code>Off</code>, such URLs are refused
+ with a 404 (Not found) error.</p>
+
+ <p>With the value <code>On</code>, such URLs are accepted, and encoded
+ slashes are decoded like all other encoded characters.</p>
+
+ <p>With the value <code>NoDecode</code>, such URLs are accepted, but
+ encoded slashes are not decoded but left in their encoded state.</p>
<p>Turning <code class="directive">AllowEncodedSlashes</code> <code>On</code> is
mostly useful when used in conjunction with <code>PATH_INFO</code>.</p>
<div class="note"><h3>Note</h3>
- <p>Allowing encoded slashes does <em>not</em> imply <em>decoding</em>.
- Occurrences of <code>%2F</code> or <code>%5C</code> (<em>only</em> on
- according systems) will be left as such in the otherwise decoded URL
- string.</p>
+ <p>If encoded slashes are needed in path info, use of <code>NoDecode</code> is
+ strongly recommended as a security measure. Allowing slashes
+ to be decoded could potentially allow unsafe paths.</p>
</div>
<h3>See also</h3>
<code class="directive"><a href="#files"><Files></a></code> sections.
</div>
- <p>When this directive is set to <code>None</code>, then
- <a href="#accessfilename">.htaccess</a> files are completely ignored.
- In this case, the server will not even attempt to read
- <code>.htaccess</code> files in the filesystem.</p>
+ <p>When this directive is set to <code>None</code> and <code class="directive"><a href="#allowoverridelist">AllowOverrideList</a></code> is set to
+ <code>None</code> <a href="#accessfilename">.htaccess</a> files are
+ completely ignored. In this case, the server will not even attempt
+ to read <code>.htaccess</code> files in the filesystem.</p>
<p>When this directive is set to <code>All</code>, then any
directive which has the .htaccess <a href="directive-dict.html#Context">Context</a> is allowed in
<dd>
- Allow use of the authorization directives (<code class="directive"><a href="../mod/mod_authn_dbm.html#authdbmgroupfile">AuthDBMGroupFile</a></code>,
+ Allow use of the authorization directives (<code class="directive"><a href="../mod/mod_authz_dbm.html#authdbmgroupfile">AuthDBMGroupFile</a></code>,
<code class="directive"><a href="../mod/mod_authn_dbm.html#authdbmuserfile">AuthDBMUserFile</a></code>,
<code class="directive"><a href="../mod/mod_authz_groupfile.html#authgroupfile">AuthGroupFile</a></code>,
<code class="directive"><a href="../mod/mod_authn_core.html#authname">AuthName</a></code>,
<code class="directive"><a href="#setoutputfilter">SetOutputFilter</a></code>, and
<code class="module"><a href="../mod/mod_mime.html">mod_mime</a></code> Add* and Remove* directives),
document meta data (<code class="directive"><a href="../mod/mod_headers.html#header">Header</a></code>, <code class="directive"><a href="../mod/mod_headers.html#requestheader">RequestHeader</a></code>, <code class="directive"><a href="../mod/mod_setenvif.html#setenvif">SetEnvIf</a></code>, <code class="directive"><a href="../mod/mod_setenvif.html#setenvifnocase">SetEnvIfNoCase</a></code>, <code class="directive"><a href="../mod/mod_setenvif.html#browsermatch">BrowserMatch</a></code>, <code class="directive"><a href="../mod/mod_usertrack.html#cookieexpires">CookieExpires</a></code>, <code class="directive"><a href="../mod/mod_usertrack.html#cookiedomain">CookieDomain</a></code>, <code class="directive"><a href="../mod/mod_usertrack.html#cookiestyle">CookieStyle</a></code>, <code class="directive"><a href="../mod/mod_usertrack.html#cookietracking">CookieTracking</a></code>, <code class="directive"><a href="../mod/mod_usertrack.html#cookiename">CookieName</a></code>),
- <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> directives <code class="directive"><a href="../mod/mod_rewrite.html#rewriteengine">RewriteEngine</a></code>, <code class="directive"><a href="../mod/mod_rewrite.html#rewriteoptions">RewriteOptions</a></code>, <code class="directive"><a href="../mod/mod_rewrite.html#rewritebase">RewriteBase</a></code>, <code class="directive"><a href="../mod/mod_rewrite.html#rewritecond">RewriteCond</a></code>, <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code>) and
+ <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code> directives (<code class="directive"><a href="../mod/mod_rewrite.html#rewriteengine">RewriteEngine</a></code>, <code class="directive"><a href="../mod/mod_rewrite.html#rewriteoptions">RewriteOptions</a></code>, <code class="directive"><a href="../mod/mod_rewrite.html#rewritebase">RewriteBase</a></code>, <code class="directive"><a href="../mod/mod_rewrite.html#rewritecond">RewriteCond</a></code>, <code class="directive"><a href="../mod/mod_rewrite.html#rewriterule">RewriteRule</a></code>),
+ <code class="module"><a href="../mod/mod_alias.html">mod_alias</a></code> directives (<code class="directive"><a href="../mod/mod_alias.html#redirect">Redirect</a></code>, <code class="directive"><a href="../mod/mod_alias.html#redirecttemp">RedirectTemp</a></code>, <code class="directive"><a href="../mod/mod_alias.html#redirectpermanent">RedirectPermanent</a></code>, <code class="directive"><a href="../mod/mod_alias.html#redirectmatch">RedirectMatch</a></code>), and
<code class="directive"><a href="../mod/mod_actions.html#action">Action</a></code> from
<code class="module"><a href="../mod/mod_actions.html">mod_actions</a></code>.
</dd>
(<code class="directive"><a href="../mod/mod_autoindex.html#adddescription">AddDescription</a></code>,
<code class="directive"><a href="../mod/mod_autoindex.html#addicon">AddIcon</a></code>, <code class="directive"><a href="../mod/mod_autoindex.html#addiconbyencoding">AddIconByEncoding</a></code>,
<code class="directive"><a href="../mod/mod_autoindex.html#addiconbytype">AddIconByType</a></code>,
- <code class="directive"><a href="../mod/mod_autoindex.html#defaulticon">DefaultIcon</a></code>, <code class="directive"><a href="../mod/mod_dir.html#directoryindex">DirectoryIndex</a></code>, <code class="directive"><a href="../mod/mod_autoindex.html#fancyindexing">FancyIndexing</a></code>, <code class="directive"><a href="../mod/mod_autoindex.html#headername">HeaderName</a></code>, <code class="directive"><a href="../mod/mod_autoindex.html#indexignore">IndexIgnore</a></code>, <code class="directive"><a href="../mod/mod_autoindex.html#indexoptions">IndexOptions</a></code>, <code class="directive"><a href="../mod/mod_autoindex.html#readmename">ReadmeName</a></code>,
+ <code class="directive"><a href="../mod/mod_autoindex.html#defaulticon">DefaultIcon</a></code>, <code class="directive"><a href="../mod/mod_dir.html#directoryindex">DirectoryIndex</a></code>, , <code class="directive"><a href="../mod/mod_dir.html#fallbackresource">FallbackResource</a></code>,<a href="mod_autoindex.html#indexoptions.fancyindexing"><code>FancyIndexing</code></a>, <code class="directive"><a href="../mod/mod_autoindex.html#headername">HeaderName</a></code>, <code class="directive"><a href="../mod/mod_autoindex.html#indexignore">IndexIgnore</a></code>, <code class="directive"><a href="../mod/mod_autoindex.html#indexoptions">IndexOptions</a></code>, <code class="directive"><a href="../mod/mod_autoindex.html#readmename">ReadmeName</a></code>,
<em>etc.</em>).</dd>
<dt>Limit</dt>
<dd>
- Allow use of the directives controlling host access (<code class="directive"><a href="../mod/mod_authz_host.html#allow">Allow</a></code>, <code class="directive"><a href="../mod/mod_authz_host.html#deny">Deny</a></code> and <code class="directive"><a href="../mod/mod_authz_host.html#order">Order</a></code>).</dd>
+ Allow use of the directives controlling host access (<code class="directive"><a href="../mod/mod_access_compat.html#allow">Allow</a></code>, <code class="directive"><a href="../mod/mod_access_compat.html#deny">Deny</a></code> and <code class="directive"><a href="../mod/mod_access_compat.html#order">Order</a></code>).</dd>
+
+
+
+
+ <dt>Nonfatal=[Override|Unknown|All]</dt>
+
+ <dd>
+ Allow use of AllowOverride option to treat syntax errors in
+ .htaccess as non-fatal: instead of causing an Internal Server
+ Error, disallowed or unrecognised directives will be ignored
+ and a warning logged:
+ <ul>
+ <li><strong>Nonfatal=Override</strong> treats directives
+ forbidden by AllowOverride as non-fatal.</li>
+ <li><strong>Nonfatal=Unknown</strong> treats unknown directives
+ as non-fatal. This covers typos and directives implemented
+ by a module that's not present.</li>
+ <li><strong>Nonfatal=All</strong> treats both the above as non-fatal.</li>
+ </ul>
+ <p>Note that a syntax error in a valid directive will still cause
+ an internal server error.</p>
+ <div class="warning"><h3>Security</h3>
+ Nonfatal errors may have security implications for .htaccess users.
+ For example, if AllowOverride disallows AuthConfig, users'
+ configuration designed to restrict access to a site will be disabled.
+ </div>
+ </dd>
<dt>Options[=<var>Option</var>,...]</dt>
features (<code class="directive"><a href="#options">Options</a></code> and
<code class="directive"><a href="../mod/mod_include.html#xbithack">XBitHack</a></code>).
An equal sign may be given followed by a comma (but no spaces)
- separated lists of options that may be set using the <code class="directive"><a href="#options">Options</a></code> command.</dd>
+ separated lists of options that may be set using the <code class="directive"><a href="#options">Options</a></code> command.
+
+ <div class="note"><h3>Implicit disabling of Options</h3>
+ <p>Even though the list of options that may be used in .htaccess files
+ can be limited with this directive, as long as any <code class="directive"><a href="#options">Options</a></code> directive is allowed any
+ other inherited option can be disabled by using the non-relative
+ syntax. In other words, this mechanism cannot force a specific option
+ to remain <em>set</em> while allowing any others to be set.
+ </p></div>
+
+ <div class="example"><p><code>
+ AllowOverride Options=Indexes,MultiViews
+ </code></p></div>
+ </dd>
</dl>
<p>Example:</p>
- <div class="example"><p><code>
- AllowOverride AuthConfig Indexes
- </code></p></div>
+ <pre class="prettyprint lang-config">AllowOverride AuthConfig Indexes</pre>
+
<p>In the example above all directives that are neither in the group
<code>AuthConfig</code> nor <code>Indexes</code> cause an internal
<h3>See also</h3>
<ul>
<li><code class="directive"><a href="#accessfilename">AccessFileName</a></code></li>
+<li><code class="directive"><a href="#allowoverridelist">AllowOverrideList</a></code></li>
+<li><a href="../configuring.html">Configuration Files</a></li>
+<li><a href="../howto/htaccess.html">.htaccess Files</a></li>
+</ul>
+</div>
+<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="directive-section"><h2><a name="AllowOverrideList" id="AllowOverrideList">AllowOverrideList</a> <a name="allowoverridelist" id="allowoverridelist">Directive</a></h2>
+<table class="directive">
+<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Individual directives that are allowed in
+<code>.htaccess</code> files</td></tr>
+<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AllowOverrideList None|<var>directive</var>
+[<var>directive-type</var>] ...</code></td></tr>
+<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>AllowOverrideList None</code></td></tr>
+<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory</td></tr>
+<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Core</td></tr>
+<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>core</td></tr>
+</table>
+ <p>When the server finds an <code>.htaccess</code> file (as
+ specified by <code class="directive"><a href="#accessfilename">AccessFileName</a></code>)
+ it needs to know which directives declared in that file can override
+ earlier configuration directives.</p>
+
+ <div class="note"><h3>Only available in <Directory> sections</h3>
+ <code class="directive">AllowOverrideList</code> is valid only in
+ <code class="directive"><a href="#directory"><Directory></a></code>
+ sections specified without regular expressions, not in <code class="directive"><a href="#location"><Location></a></code>, <code class="directive"><a href="#directorymatch"><DirectoryMatch></a></code> or
+ <code class="directive"><a href="#files"><Files></a></code> sections.
+ </div>
+
+ <p>When this directive is set to <code>None</code> and <code class="directive"><a href="#allowoverride">AllowOverride</a></code> is set to <code>None</code>,
+ then <a href="#accessfilename">.htaccess</a> files are completely
+ ignored. In this case, the server will not even attempt to read
+ <code>.htaccess</code> files in the filesystem.</p>
+
+ <p>Example:</p>
+
+ <pre class="prettyprint lang-config">
+AllowOverride None
+AllowOverrideList Redirect RedirectMatch
+ </pre>
+
+
+ <p>In the example above only the <code>Redirect</code> and
+ <code>RedirectMatch</code> directives are allowed. All others will
+ cause an internal server error.</p>
+
+ <p>Example:</p>
+
+ <pre class="prettyprint lang-config">
+AllowOverride AuthConfig
+AllowOverrideList CookieTracking CookieName
+ </pre>
+
+
+ <p>In the example above <code class="directive"><a href="#allowoverride ">AllowOverride
+ </a></code> grants permission to the <code>AuthConfig</code>
+ directive grouping and <code class="directive">AllowOverrideList</code> grants
+ permission to only two directives from the <code>FileInfo</code> directive
+ grouping. All others will cause an internal server error.</p>
+
+<h3>See also</h3>
+<ul>
+<li><code class="directive"><a href="#accessfilename">AccessFileName</a></code></li>
+<li><code class="directive"><a href="#allowoverride">AllowOverride</a></code></li>
<li><a href="../configuring.html">Configuration Files</a></li>
<li><a href="../howto/htaccess.html">.htaccess Files</a></li>
</ul>
SSI documents, output from CGI scripts, and byte range responses
do not have this header.</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="DefaultRuntimeDir" id="DefaultRuntimeDir">DefaultRuntimeDir</a> <a name="defaultruntimedir" id="defaultruntimedir">Directive</a></h2>
+<table class="directive">
+<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Base directory for the server run-time files</td></tr>
+<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>DefaultRuntimeDir <var>directory-path</var></code></td></tr>
+<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>DefaultRuntimeDir DEFAULT_REL_RUNTIMEDIR (logs/)</code></td></tr>
+<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr>
+<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Core</td></tr>
+<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>core</td></tr>
+</table>
+ <p>The <code class="directive">DefaultRuntimeDir</code> directive sets the
+ directory in which the server will create various run-time files
+ (shared memory, locks, etc.). If set as a relative path, the full path
+ will be relative to <code class="directive">ServerRoot</code>.</p>
+
+ <p><strong>Example</strong></p>
+ <pre class="prettyprint lang-config">
+DefaultRuntimeDir scratch/
+ </pre>
+
+
+ <p>The default location of <code class="directive">DefaultRuntimeDir</code> may be
+ modified by changing the <code>DEFAULT_REL_RUNTIMEDIR</code> #define
+ at build time.</p>
+
+ <p>Note: <code class="directive">ServerRoot</code> should be specified before this
+ directive is used, otherwise the default value of <code class="directive">ServerRoot</code>
+ would be used to set the base directory.</p>
+
+
+<h3>See also</h3>
+<ul>
+<li><a href="../misc/security_tips.html#serverroot">the
+ security tips</a> for information on how to properly set
+ permissions on the <code class="directive">ServerRoot</code></li>
+</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="DefaultType" id="DefaultType">DefaultType</a> <a name="defaulttype" id="defaulttype">Directive</a></h2>
of configuration files, it may be specified with the value
<code>none</code>, meaning no default media type. For example:</p>
- <div class="example"><p><code>
- DefaultType None
- </code></p></div>
+ <pre class="prettyprint lang-config">DefaultType None</pre>
+
<p><code>DefaultType None</code> is only available in
httpd-2.2.7 and later.</p>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="Define" id="Define">Define</a> <a name="define" id="define">Directive</a></h2>
<table class="directive">
-<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Define the existence of a variable</td></tr>
-<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>Define <var>parameter-name</var></code></td></tr>
-<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr>
+<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Define a variable</td></tr>
+<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>Define <var>parameter-name</var> [<var>parameter-value</var>]</code></td></tr>
+<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Core</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>core</td></tr>
</table>
- <p>Equivalent to passing the <code>-D</code> argument to <code class="program"><a href="../programs/httpd.html">httpd</a></code>.</p>
- <p>This directive can be used to toggle the use of <code class="directive"><a href="#ifdefine"><IfDefine></a></code> sections without needing to alter
- <code>-D</code> arguments in any startup scripts.</p>
+ <p>In its one parameter form, <code class="directive">Define</code> is equivalent
+ to passing the <code>-D</code> argument to <code class="program"><a href="../programs/httpd.html">httpd</a></code>. It
+ can be used to toggle the use of
+ <code class="directive"><a href="#ifdefine"><IfDefine></a></code> sections
+ without needing to alter <code>-D</code> arguments in any startup
+ scripts.</p>
+
+ <p>In addition to that, if the second parameter is given, a config variable
+ is set to this value. The variable can be used in the configuration using
+ the <code>${VAR}</code> syntax. The variable is always globally defined
+ and not limited to the scope of the surrounding config section.</p>
+
+ <pre class="prettyprint lang-config">
+<IfDefine TEST>
+ Define servername test.example.com
+</IfDefine>
+<IfDefine !TEST>
+ Define servername www.example.com
+ Define SSL
+</IfDefine>
+
+ DocumentRoot /var/www/${servername}/htdocs
+ </pre>
+
+
+ <p>Variable names may not contain colon ":" characters, to avoid clashes
+ with <code class="directive"><a href="../mod/mod_rewrite.html#rewritemap">RewriteMap</a></code>'s syntax.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<code>/home/user/public_html</code>, but <code><Directory
/home/*/public_html></code> will match. Example:</p>
- <div class="example"><p><code>
- <Directory /usr/local/httpd/htdocs><br />
- <span class="indent">
- Options Indexes FollowSymLinks<br />
- </span>
- </Directory>
- </code></p></div>
+ <pre class="prettyprint lang-config">
+<Directory "/usr/local/httpd/htdocs">
+ Options Indexes FollowSymLinks
+</Directory>
+ </pre>
+
<div class="note">
<p>Be careful with the <var>directory-path</var> arguments:
expressions</a> can also be used, with the addition of the
<code>~</code> character. For example:</p>
- <div class="example"><p><code>
- <Directory ~ "^/www/.*/[0-9]{3}">
- </code></p></div>
+ <pre class="prettyprint lang-config">
+<Directory ~ "^/www/[0-9]{3}">
+
+</Directory>
+</pre>
+
<p>would match directories in <code>/www/</code> that consisted of
three numbers.</p>
first, interspersed with the directives from the <a href="#accessfilename">.htaccess</a> files. For example,
with</p>
- <div class="example"><p><code>
- <Directory /><br />
- <span class="indent">
- AllowOverride None<br />
- </span>
- </Directory><br />
- <br />
- <Directory /home><br />
- <span class="indent">
- AllowOverride FileInfo<br />
- </span>
- </Directory>
- </code></p></div>
+ <pre class="prettyprint lang-config">
+<Directory />
+ AllowOverride None
+</Directory>
+
+<Directory "/home">
+ AllowOverride FileInfo
+</Directory>
+ </pre>
+
<p>for access to the document <code>/home/web/dir/doc.html</code>
the steps are:</p>
expressions are tested in the order they appeared in the
configuration file. For example, with</p>
- <div class="example"><p><code>
- <Directory ~ abc$><br />
- <span class="indent">
- # ... directives here ...<br />
- </span>
- </Directory>
- </code></p></div>
+ <pre class="prettyprint lang-config">
+<Directory ~ "abc$">
+ # ... directives here ...
+</Directory>
+ </pre>
+
<p>the regular expression section won't be considered until after
all normal <code class="directive"><Directory></code>s and
be applied.</p>
<p><strong>Note that the default access for
- <code><Directory /></code> is <code>Allow from All</code>.
+ <code><Directory /></code> is to permit all access.
This means that Apache httpd will serve any file mapped from an URL. It is
recommended that you change this with a block such
as</strong></p>
- <div class="example"><p><code>
- <Directory /><br />
- <span class="indent">
- Order Deny,Allow<br />
- Deny from All<br />
- </span>
- </Directory>
- </code></p></div>
+ <pre class="prettyprint lang-config">
+<Directory />
+ Require all denied
+</Directory>
+ </pre>
+
<p><strong>and then override this for directories you
<em>want</em> accessible. See the <a href="../misc/security_tips.html">Security Tips</a> page for more
However, it takes as an argument a
<a class="glossarylink" href="../glossary.html#regex" title="see glossary">regular expression</a>. For example:</p>
- <div class="example"><p><code>
- <DirectoryMatch "^/www/(.+/)?[0-9]{3}">
- </code></p></div>
+ <pre class="prettyprint lang-config">
+<DirectoryMatch "^/www/(.+/)?[0-9]{3}">
+ # ...
+</DirectoryMatch>
+</pre>
+
<p>would match directories in <code>/www/</code> that consisted of three
numbers.</p>
path from the requested URL to the document root to make the
path to the document. Example:</p>
- <div class="example"><p><code>
- DocumentRoot /usr/web
- </code></p></div>
+ <pre class="prettyprint lang-config">DocumentRoot "/usr/web"</pre>
+
<p>then an access to
<code>http://my.example.com/index.html</code> refers to
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="directive-section"><h2><a name="Else" id="Else"><Else></a> <a name="else" id="else">Directive</a></h2>
+<table class="directive">
+<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Contains directives that apply only if the condition of a
+previous <code class="directive"><a href="#if"><If></a></code> or
+<code class="directive"><a href="#elseif"><ElseIf></a></code> section is not
+satisfied by a request at runtime</td></tr>
+<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code><Else> ... </Else></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>All</td></tr>
+<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Core</td></tr>
+<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>core</td></tr>
+</table>
+ <p>The <code class="directive"><Else></code> applies the enclosed
+ directives if and only if the most recent
+ <code class="directive"><If></code> or
+ <code class="directive"><ElseIf></code> section
+ in the same scope has not been applied.
+ For example: In </p>
+
+ <pre class="prettyprint lang-config">
+<If "-z req('Host')">
+ # ...
+</If>
+<Else>
+ # ...
+</Else>
+ </pre>
+
+
+ <p> The <code class="directive"><If></code> would match HTTP/1.0
+ requests without a <var>Host:</var> header and the
+ <code class="directive"><Else></code> would match requests
+ with a <var>Host:</var> header.</p>
+
+
+<h3>See also</h3>
+<ul>
+<li><code class="directive"><a href="#if"><If></a></code></li>
+<li><code class="directive"><a href="#elseif"><ElseIf></a></code></li>
+<li><a href="../sections.html">How <Directory>, <Location>,
+ <Files> sections work</a> for an explanation of how these
+ different sections are combined when a request is received.
+ <code class="directive"><If></code>,
+ <code class="directive"><ElseIf></code>, and
+ <code class="directive"><Else></code> are applied last.</li>
+</ul>
+</div>
+<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="directive-section"><h2><a name="ElseIf" id="ElseIf"><ElseIf></a> <a name="elseif" id="elseif">Directive</a></h2>
+<table class="directive">
+<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Contains directives that apply only if a condition is satisfied
+by a request at runtime while the condition of a previous
+<code class="directive"><a href="#if"><If></a></code> or
+<code class="directive"><ElseIf></code> section is not
+satisfied</td></tr>
+<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code><ElseIf <var>expression</var>> ... </ElseIf></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>All</td></tr>
+<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Core</td></tr>
+<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>core</td></tr>
+</table>
+ <p>The <code class="directive"><ElseIf></code> applies the enclosed
+ directives if and only if both the given condition evaluates to true and
+ the most recent <code class="directive"><If></code> or
+ <code class="directive"><ElseIf></code> section in the same scope has
+ not been applied. For example: In </p>
+
+ <pre class="prettyprint lang-config">
+<If "-R '10.1.0.0/16'">
+ #...
+</If>
+<ElseIf "-R '10.0.0.0/8'">
+ #...
+</ElseIf>
+<Else>
+ #...
+</Else>
+ </pre>
+
+
+ <p>The <code class="directive"><ElseIf></code> would match if
+ the remote address of a request belongs to the subnet 10.0.0.0/8 but
+ not to the subnet 10.1.0.0/16.</p>
+
+
+<h3>See also</h3>
+<ul>
+<li><a href="../expr.html">Expressions in Apache HTTP Server</a>,
+for a complete reference and more examples.</li>
+<li><code class="directive"><a href="#if"><If></a></code></li>
+<li><code class="directive"><a href="#else"><Else></a></code></li>
+<li><a href="../sections.html">How <Directory>, <Location>,
+ <Files> sections work</a> for an explanation of how these
+ different sections are combined when a request is received.
+ <code class="directive"><If></code>,
+ <code class="directive"><ElseIf></code>, and
+ <code class="directive"><Else></code> are applied last.</li>
+</ul>
+</div>
+<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="EnableMMAP" id="EnableMMAP">EnableMMAP</a> <a name="enablemmap" id="enablemmap">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Use memory-mapping to read files during delivery</td></tr>
<p>For server configurations that are vulnerable to these problems,
you should disable memory-mapping of delivered files by specifying:</p>
- <div class="example"><p><code>
- EnableMMAP Off
- </code></p></div>
+ <pre class="prettyprint lang-config">EnableMMAP Off</pre>
+
<p>For NFS mounted files, this feature may be disabled explicitly for
the offending files by specifying:</p>
- <div class="example"><p><code>
- <Directory "/path-to-nfs-files">
- <span class="indent">
- EnableMMAP Off
- </span>
- </Directory>
- </code></p></div>
+ <pre class="prettyprint lang-config">
+<Directory "/path-to-nfs-files">
+ EnableMMAP Off
+</Directory>
+ </pre>
+
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
support.</li>
<li>On Linux the use of sendfile triggers TCP-checksum
offloading bugs on certain networking cards when using IPv6.</li>
- <li>On Linux on Itanium, sendfile may be unable to handle files
- over 2GB in size.</li>
+ <li>On Linux on Itanium, <code>sendfile</code> may be unable to handle
+ files over 2GB in size.</li>
<li>With a network-mounted <code class="directive"><a href="#documentroot">DocumentRoot</a></code> (e.g., NFS, SMB, CIFS, FUSE),
the kernel may be unable to serve the network file through
its own cache.</li>
<p>For server configurations that are not vulnerable to these problems,
you may enable this feature by specifying:</p>
- <div class="example"><p><code>
- EnableSendfile On
- </code></p></div>
+ <pre class="prettyprint lang-config">EnableSendfile On</pre>
+
<p>For network mounted files, this feature may be disabled explicitly
for the offending files by specifying:</p>
- <div class="example"><p><code>
- <Directory "/path-to-nfs-files">
- <span class="indent">
- EnableSendfile Off
- </span>
- </Directory>
- </code></p></div>
+ <pre class="prettyprint lang-config">
+<Directory "/path-to-nfs-files">
+ EnableSendfile Off
+</Directory>
+ </pre>
+
<p>Please note that the per-directory and .htaccess configuration
of <code class="directive">EnableSendfile</code> is not supported by
<code class="module"><a href="../mod/mod_cache_disk.html">mod_cache_disk</a></code>.
configuration parsing. The typical use is for reporting required
modules which are missing from the configuration.</p>
- <div class="example"><h3>Example</h3><p><code>
- # ensure that mod_include is loaded<br />
- <IfModule !include_module><br />
- Error mod_include is required by mod_foo. Load it with LoadModule.<br />
- </IfModule><br />
- <br />
- # ensure that exactly one of SSL,NOSSL is defined<br />
- <IfDefine SSL><br />
- <IfDefine NOSSL><br />
- Error Both SSL and NOSSL are defined. Define only one of them.<br />
- </IfDefine><br />
- </IfDefine><br />
- <IfDefine !SSL><br />
- <IfDefine !NOSSL><br />
- Error Either SSL or NOSSL must be defined.<br />
- </IfDefine><br />
- </IfDefine><br />
- </code></p></div>
+ <pre class="prettyprint lang-config">
+# Example
+# ensure that mod_include is loaded
+<IfModule !include_module>
+ Error "mod_include is required by mod_foo. Load it with LoadModule."
+</IfModule>
+
+# ensure that exactly one of SSL,NOSSL is defined
+<IfDefine SSL>
+<IfDefine NOSSL>
+ Error "Both SSL and NOSSL are defined. Define only one of them."
+</IfDefine>
+</IfDefine>
+<IfDefine !SSL>
+<IfDefine !NOSSL>
+ Error "Either SSL or NOSSL must be defined."
+</IfDefine>
+</IfDefine>
+ </pre>
+
</div>
full URL which the client can resolve. Alternatively, a message
can be provided to be displayed by the browser. Examples:</p>
- <div class="example"><p><code>
- ErrorDocument 500 http://foo.example.com/cgi-bin/tester<br />
- ErrorDocument 404 /cgi-bin/bad_urls.pl<br />
- ErrorDocument 401 /subscription_info.html<br />
- ErrorDocument 403 "Sorry can't allow you access today"
- </code></p></div>
+ <pre class="prettyprint lang-config">
+ErrorDocument 500 http://foo.example.com/cgi-bin/tester
+ErrorDocument 404 /cgi-bin/bad_urls.pl
+ErrorDocument 401 /subscription_info.html
+ErrorDocument 403 "Sorry can't allow you access today"
+ErrorDocument 403 Forbidden!
+ </pre>
+
<p>Additionally, the special value <code>default</code> can be used
to specify Apache httpd's simple hardcoded message. While not required
Apache httpd's simple hardcoded message for configurations that would
otherwise inherit an existing <code class="directive">ErrorDocument</code>.</p>
- <div class="example"><p><code>
- ErrorDocument 404 /cgi-bin/bad_urls.pl<br /><br />
- <Directory /web/docs><br />
- <span class="indent">
- ErrorDocument 404 default<br />
- </span>
- </Directory>
- </code></p></div>
+ <pre class="prettyprint lang-config">
+ErrorDocument 404 /cgi-bin/bad_urls.pl
+
+<Directory /web/docs>
+ ErrorDocument 404 default
+</Directory>
+ </pre>
+
<p>Note that when you specify an <code class="directive">ErrorDocument</code>
that points to a remote URL (ie. anything with a method such as
error rather than masking it. More information is available in
Microsoft Knowledge Base article <a href="http://support.microsoft.com/default.aspx?scid=kb;en-us;Q294807">Q294807</a>.</p>
- <p>Although most error messages can be overriden, there are certain
+ <p>Although most error messages can be overridden, there are certain
circumstances where the internal messages are used regardless of the
setting of <code class="directive"><a href="#errordocument">ErrorDocument</a></code>. In
particular, if a malformed request is detected, normal request processing
the <var>file-path</var> is not absolute then it is assumed to be
relative to the <code class="directive"><a href="#serverroot">ServerRoot</a></code>.</p>
- <div class="example"><h3>Example</h3><p><code>
- ErrorLog /var/log/httpd/error_log
- </code></p></div>
+ <pre class="prettyprint lang-config">ErrorLog "/var/log/httpd/error_log"</pre>
+
<p>If the <var>file-path</var>
begins with a pipe character "<code>|</code>" then it is assumed to be a
command to spawn to handle the error log.</p>
- <div class="example"><h3>Example</h3><p><code>
- ErrorLog "|/usr/local/bin/httpd_errors"
- </code></p></div>
+ <pre class="prettyprint lang-config">ErrorLog "|/usr/local/bin/httpd_errors"</pre>
+
<p>See the notes on <a href="../logs.html#piped">piped logs</a> for
more information.</p>
in individual virtual hosts, the final facility specified affects the
entire server.</p>
- <div class="example"><h3>Example</h3><p><code>
- ErrorLog syslog:user
- </code></p></div>
+ <pre class="prettyprint lang-config">ErrorLog syslog:user</pre>
+
<p>SECURITY: See the <a href="../misc/security_tips.html#serverroot">security tips</a>
document for details on why your security could be compromised
<div class="directive-section"><h2><a name="ErrorLogFormat" id="ErrorLogFormat">ErrorLogFormat</a> <a name="errorlogformat" id="errorlogformat">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Format specification for error log entries</td></tr>
-<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code> ErrorLog [connection|request] <var>format</var></code></td></tr>
+<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code> ErrorLogFormat [connection|request] <var>format</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Core</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>core</td></tr>
supplementary information is logged in the error log in addition to the
actual log message.</p>
- <div class="example"><h3>Simple example</h3><p><code>
- ErrorLogFormat "[%t] [%l] [pid %P] %F: %E: [client %a] %M"
- </code></p></div>
+ <pre class="prettyprint lang-config">
+#Simple example
+ErrorLogFormat "[%t] [%l] [pid %P] %F: %E: [client %a] %M"
+ </pre>
+
<p>Specifying <code>connection</code> or <code>request</code> as first
parameter allows to specify additional formats, causing additional
information to be logged when the first message is logged for a specific
- connection or request, respectivly. This additional information is only
+ connection or request, respectively. This additional information is only
logged once per connection/request. If a connection or request is processed
without causing any log message, the additional information is not logged
either.</p>
example, the Referer header is only present if the log message is
associated to a request and the log message happens at a time when the
Referer header has already been read from the client. If no output is
- produced, the default behaviour is to delete everything from the preceeding
+ produced, the default behavior is to delete everything from the preceding
space character to the next space character. This means the log line is
implicitly divided into fields on non-whitespace to whitespace transitions.
If a format string item does not produce output, the whole field is
- ommitted. For example, if the remote address <code>%a</code> in the log
+ omitted. For example, if the remote address <code>%a</code> in the log
format <code>[%t] [%l] [%a] %M </code> is not available, the surrounding
brackets are not logged either. Space characters can be escaped with a
backslash to prevent them from delimiting a field. The combination '% '
- (percent space) is a zero-witdh field delimiter that does not produce any
+ (percent space) is a zero-width field delimiter that does not produce any
output.</p>
- <p>The above behaviour can be changed by adding modifiers to the format
+ <p>The above behavior can be changed by adding modifiers to the format
string item. A <code>-</code> (minus) modifier causes a minus to be logged if the
respective item does not produce any output. In once-per-connection/request
formats, it is also possible to use the <code>+</code> (plus) modifier. If an
item with the plus modifier does not produce any output, the whole line is
- ommitted.</p>
+ omitted.</p>
<p>A number as modifier can be used to assign a log severity level to a
format item. The item will only be logged if the severity of the log
message is not higher than the specified log severity level. The number can
range from 1 (alert) over 4 (warn) and 7 (debug) to 15 (trace8).</p>
+ <p>For example, here's what would happen if you added modifiers to
+ the <code>%{Referer}i</code> token, which logs the
+ <code>Referer</code> request header.</p>
+
+ <table class="bordered"><tr class="header"><th>Modified Token</th><th>Meaning</th></tr>
+<tr>
+ <td><code>%-{Referer}i</code></td>
+ <td>Logs a <code>-</code> if <code>Referer</code> is not set.</td>
+ </tr>
+<tr class="odd">
+ <td><code>%+{Referer}i</code></td>
+ <td>Omits the entire line if <code>Referer</code> is not set.</td>
+ </tr>
+<tr>
+ <td><code>%4{Referer}i</code></td>
+ <td>Logs the <code>Referer</code> only if the log message severity
+ is higher than 4.</td>
+ </tr>
+</table>
+
<p>Some format string items accept additional parameters in braces.</p>
<table class="bordered"><tr class="header"><th>Format String</th> <th>Description</th></tr>
<tr><td><code>%%</code></td>
<td>The percent sign</td></tr>
-<tr class="odd"><td><code>%...a</code></td>
- <td>Remote IP-address and port</td></tr>
-<tr><td><code>%...A</code></td>
+<tr class="odd"><td><code>%a</code></td>
+ <td>Client IP address and port of the request</td></tr>
+<tr><td><code>%{c}a</code></td>
+ <td>Underlying peer IP address and port of the connection (see the
+ <code class="module"><a href="../mod/mod_remoteip.html">mod_remoteip</a></code> module)</td></tr>
+<tr class="odd"><td><code>%A</code></td>
<td>Local IP-address and port</td></tr>
-<tr class="odd"><td><code>%...{name}e</code></td>
- <td>Request environment variable <code>name</code></td></tr>
-<tr><td><code>%...E</code></td>
+<tr><td><code>%{<em>name</em>}e</code></td>
+ <td>Request environment variable <em>name</em></td></tr>
+<tr class="odd"><td><code>%E</code></td>
<td>APR/OS error status code and string</td></tr>
-<tr class="odd"><td><code>%...F</code></td>
+<tr><td><code>%F</code></td>
<td>Source file name and line number of the log call</td></tr>
-<tr><td><code>%...{name}i</code></td>
- <td>Request header <code>name</code></td></tr>
-<tr class="odd"><td><code>%...k</code></td>
+<tr class="odd"><td><code>%{<em>name</em>}i</code></td>
+ <td>Request header <em>name</em></td></tr>
+<tr><td><code>%k</code></td>
<td>Number of keep-alive requests on this connection</td></tr>
-<tr><td><code>%...l</code></td>
+<tr class="odd"><td><code>%l</code></td>
<td>Loglevel of the message</td></tr>
-<tr class="odd"><td><code>%...L</code></td>
+<tr><td><code>%L</code></td>
<td>Log ID of the request</td></tr>
-<tr><td><code>%...{c}L</code></td>
+<tr class="odd"><td><code>%{c}L</code></td>
<td>Log ID of the connection</td></tr>
-<tr class="odd"><td><code>%...{C}L</code></td>
+<tr><td><code>%{C}L</code></td>
<td>Log ID of the connection if used in connection scope, empty otherwise</td></tr>
-<tr><td><code>%...m</code></td>
+<tr class="odd"><td><code>%m</code></td>
<td>Name of the module logging the message</td></tr>
-<tr class="odd"><td><code>%M</code></td>
+<tr><td><code>%M</code></td>
<td>The actual log message</td></tr>
-<tr><td><code>%...{name}n</code></td>
- <td>Request note <code>name</code></td></tr>
-<tr class="odd"><td><code>%...P</code></td>
+<tr class="odd"><td><code>%{<em>name</em>}n</code></td>
+ <td>Request note <em>name</em></td></tr>
+<tr><td><code>%P</code></td>
<td>Process ID of current process</td></tr>
-<tr><td><code>%...T</code></td>
+<tr class="odd"><td><code>%T</code></td>
<td>Thread ID of current thread</td></tr>
-<tr class="odd"><td><code>%...t</code></td>
+<tr><td><code>%{g}T</code></td>
+ <td>System unique thread ID of current thread (the same ID as
+ displayed by e.g. <code>top</code>; currently Linux only)</td></tr>
+<tr class="odd"><td><code>%t</code></td>
<td>The current time</td></tr>
-<tr><td><code>%...{u}t</code></td>
+<tr><td><code>%{u}t</code></td>
<td>The current time including micro-seconds</td></tr>
-<tr class="odd"><td><code>%...{cu}t</code></td>
+<tr class="odd"><td><code>%{cu}t</code></td>
<td>The current time in compact ISO 8601 format, including
micro-seconds</td></tr>
-<tr><td><code>%...v</code></td>
+<tr><td><code>%v</code></td>
<td>The canonical <code class="directive"><a href="#servername">ServerName</a></code>
of the current server.</td></tr>
-<tr class="odd"><td><code>%...V</code></td>
+<tr class="odd"><td><code>%V</code></td>
<td>The server name of the server serving the request according to the
<code class="directive"><a href="#usecanonicalname">UseCanonicalName</a></code>
setting.</td></tr>
with error log lines. If <code class="module"><a href="../mod/mod_unique_id.html">mod_unique_id</a></code> is loaded, its
unique id will be used as log ID for requests.</p>
- <div class="example"><h3>Example (somewhat similar to default format)</h3><p><code>
- ErrorLogFormat "[%{u}t] [%-m:%l] [pid %P] %7F: %E: [client\ %a]
- %M% ,\ referer\ %{Referer}i"
- </code></p></div>
+ <pre class="prettyprint lang-config">
+#Example (default format)
+ErrorLogFormat "[%{u}t] [%-m:%l] [pid %P:tid %T] %7F: %E: [client\ %a] %M% ,\ referer\ %{Referer}i"
+ </pre>
- <div class="example"><h3>Example (similar to the 2.2.x format)</h3><p><code>
- ErrorLogFormat "[%t] [%l] %7F: %E: [client\ %a]
- %M% ,\ referer\ %{Referer}i"
- </code></p></div>
- <div class="example"><h3>Advanced example with request/connection log IDs</h3><p><code>
- ErrorLogFormat "[%{uc}t] [%-m:%-l] [R:%L] [C:%{C}L] %7F: %E: %M"<br />
- ErrorLogFormat request "[%{uc}t] [R:%L] Request %k on C:%{c}L pid:%P tid:%T"<br />
- ErrorLogFormat request "[%{uc}t] [R:%L] UA:'%+{User-Agent}i'"<br />
- ErrorLogFormat request "[%{uc}t] [R:%L] Referer:'%+{Referer}i'"<br />
- ErrorLogFormat connection "[%{uc}t] [C:%{c}L] local\ %a remote\ %A"<br />
+ <p>This would result in error messages such as:</p>
+
+ <div class="example"><p><code>
+ [Thu May 12 08:28:57.652118 2011] [core:error] [pid 8777:tid 4326490112] [client ::1:58619] File does not exist: /usr/local/apache2/htdocs/favicon.ico
</code></p></div>
+ <p>Notice that, as discussed above, some fields are omitted
+ entirely because they are not defined.</p>
+
+ <pre class="prettyprint lang-config">
+#Example (similar to the 2.2.x format)
+ErrorLogFormat "[%t] [%l] %7F: %E: [client\ %a] %M% ,\ referer\ %{Referer}i"
+ </pre>
+
+
+ <pre class="prettyprint lang-config">
+#Advanced example with request/connection log IDs
+ErrorLogFormat "[%{uc}t] [%-m:%-l] [R:%L] [C:%{C}L] %7F: %E: %M"
+ErrorLogFormat request "[%{uc}t] [R:%L] Request %k on C:%{c}L pid:%P tid:%T"
+ErrorLogFormat request "[%{uc}t] [R:%L] UA:'%+{User-Agent}i'"
+ErrorLogFormat request "[%{uc}t] [R:%L] Referer:'%+{Referer}i'"
+ErrorLogFormat connection "[%{uc}t] [C:%{c}L] local\ %a remote\ %A"
+ </pre>
+
+
<h3>See also</h3>
<ul>
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>File attributes used to create the ETag
HTTP response header for static files</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>FileETag <var>component</var> ...</code></td></tr>
-<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>FileETag INode MTime Size</code></td></tr>
+<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>FileETag MTime Size</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>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Core</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>core</td></tr>
+<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>The default used to be "INode MTime Size" in 2.3.14 and
+earlier.</td></tr>
</table>
<p>
The <code class="directive">FileETag</code> directive configures the file
<dd>The number of bytes in the file will be included</dd>
<dt><strong>All</strong></dt>
<dd>All available fields will be used. This is equivalent to:
- <div class="example"><p><code>FileETag INode MTime Size</code></p></div></dd>
+ <pre class="prettyprint lang-config">FileETag INode MTime Size</pre>
+</dd>
<dt><strong>None</strong></dt>
<dd>If a document is file-based, no <code>ETag</code> field will be
included in the response</dd>
<div class="warning"><h3>Warning</h3>
Do not change the default for directories or locations that have WebDAV
enabled and use <code class="module"><a href="../mod/mod_dav_fs.html">mod_dav_fs</a></code> as a storage provider.
- <code class="module"><a href="../mod/mod_dav_fs.html">mod_dav_fs</a></code> uses <code>INode MTime Size</code>
+ <code class="module"><a href="../mod/mod_dav_fs.html">mod_dav_fs</a></code> uses <code>MTime Size</code>
as a fixed format for <code>ETag</code> comparisons on conditional requests.
These conditional requests will break if the <code>ETag</code> format is
changed via <code class="directive">FileETag</code>.
<p>The <var>filename</var> argument should include a filename, or
a wild-card string, where <code>?</code> matches any single character,
- and <code>*</code> matches any sequences of characters.
- <a class="glossarylink" href="../glossary.html#regex" title="see glossary">Regular expressions</a>
+ and <code>*</code> matches any sequences of characters.</p>
+ <pre class="prettyprint lang-config">
+<Files "cat.html">
+ # Insert stuff that applies to cat.html here
+</Files>
+
+<Files "?at.*">
+ # This would apply to cat.html, bat.html, hat.php and so on.
+</Files>
+</pre>
+
+ <p><a class="glossarylink" href="../glossary.html#regex" title="see glossary">Regular expressions</a>
can also be used, with the addition of the
<code>~</code> character. For example:</p>
- <div class="example"><p><code>
- <Files ~ "\.(gif|jpe?g|png)$">
- </code></p></div>
+ <pre class="prettyprint lang-config">
+<Files ~ "\.(gif|jpe?g|png)$">
+ #...
+</Files>
+</pre>
+
<p>would match most common Internet graphics formats. <code class="directive"><a href="#filesmatch"><FilesMatch></a></code> is preferred,
however.</p>
does. However, it accepts a <a class="glossarylink" href="../glossary.html#regex" title="see glossary">regular
expression</a>. For example:</p>
- <div class="example"><p><code>
- <FilesMatch "\.(gif|jpe?g|png)$">
- </code></p></div>
+<pre class="prettyprint lang-config">
+<FilesMatch "\.(gif|jpe?g|png)$">
+ # ...
+</FilesMatch>
+</pre>
+
<p>would match most common Internet graphics formats.</p>
GIF files, but did not want to label them all with <code>.gif</code>,
you might want to use:</p>
- <div class="example"><p><code>
- ForceType image/gif
- </code></p></div>
+ <pre class="prettyprint lang-config">ForceType image/gif</pre>
+
<p>Note that this directive overrides other indirect media type
associations defined in mime.types or via the
<code class="directive">ForceType</code> settings
by using the value of <code>None</code>:</p>
- <div class="example"><p><code>
- # force all files to be image/gif:<br />
- <Location /images><br />
- <span class="indent">
- ForceType image/gif<br />
- </span>
- </Location><br />
- <br />
- # but normal mime-type associations here:<br />
- <Location /images/mixed><br />
- <span class="indent">
- ForceType None<br />
- </span>
- </Location>
- </code></p></div>
+ <pre class="prettyprint lang-config">
+# force all files to be image/gif:
+<Location /images>
+ ForceType image/gif
+</Location>
+
+# but normal mime-type associations here:
+<Location /images/mixed>
+ ForceType None
+</Location>
+ </pre>
+
<p>This directive primarily overrides the content types generated for
static files served out of the filesystem. For resources other than
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Core</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>core</td></tr>
</table>
- <p>When the server has been compiled with gprof profiling suppport,
+ <p>When the server has been compiled with gprof profiling support,
<code class="directive">GprofDir</code> causes <code>gmon.out</code> files to
be written to the specified directory when the process exits. If the
argument ends with a percent symbol ('%'), subdirectories are created
directory, can be used to look up host names from logged IP addresses
offline.</p>
+ <p>Finally, if you have <a href="mod_authz_host.html#reqhost">hostname-based Require
+ directives</a>, a hostname lookup will be performed regardless of
+ the setting of <code>HostnameLookups</code>.</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="If" id="If"><If></a> <a name="if" id="if">Directive</a></h2>
directives if and only if the expression evaluates to true.
For example:</p>
- <div class="example"><p><code>
- <If "$req{Host} = ''">
- </code></p></div>
+ <pre class="prettyprint lang-config"><If "-z req('Host')"></pre>
- <p>would match HTTP/1.0 requests without a <var>Host:</var> header.</p>
- <p>You may compare the value of any variable in the request headers
- ($req), response headers ($resp) or environment ($env) in your
- expression.</p>
+ <p>would match HTTP/1.0 requests without a <var>Host:</var> header.
+ Expressions may contain various shell-like operators for string
+ comparison (<code>=</code>, <code>!=</code>, <code><</code>, ...),
+ integer comparison (<code>-eq</code>, <code>-ne</code>, ...),
+ and others (<code>-n</code>, <code>-z</code>, <code>-f</code>, ...).
+ It is also possible to use regular expressions, </p>
- <p>Apart from <code>=</code>, <code>If</code> can use the <code>IN</code>
- operator to compare if the expression is in a given range:</p>
+ <pre class="prettyprint lang-config"><If "%{QUERY_STRING} =~ /(delete|commit)=.*?elem/"></pre>
- <div class="example"><p><code>
- <If %{REQUEST_METHOD} IN GET,HEAD,OPTIONS>
- </code></p></div>
+
+ <p>shell-like pattern matches and many other operations. These operations
+ can be done on request headers (<code>req</code>), environment variables
+ (<code>env</code>), and a large number of other properties. The full
+ documentation is available in <a href="../expr.html">Expressions in
+ Apache HTTP Server</a>.</p>
<h3>See also</h3>
<ul>
<li><a href="../expr.html">Expressions in Apache HTTP Server</a>,
for a complete reference and more examples.</li>
+<li><code class="directive"><a href="#elseif"><ElseIf></a></code></li>
+<li><code class="directive"><a href="#else"><Else></a></code></li>
<li><a href="../sections.html">How <Directory>, <Location>,
<Files> sections work</a> for an explanation of how these
different sections are combined when a request is received.
- <code class="directive"><If></code> has the same precedence
- and usage as <code class="directive"><Files></code></li>
+ <code class="directive"><If></code>,
+ <code class="directive"><ElseIf></code>, and
+ <code class="directive"><Else></code> are applied last.</li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
nest-able, which can be used to implement simple
multiple-parameter tests. Example:</p>
- <div class="example"><p><code>
- httpd -DReverseProxy -DUseCache -DMemCache ...<br />
- <br />
- # httpd.conf<br />
- <IfDefine ReverseProxy><br />
- <span class="indent">
- LoadModule proxy_module modules/mod_proxy.so<br />
- LoadModule proxy_http_module modules/mod_proxy_http.so<br />
- <IfDefine UseCache><br />
- <span class="indent">
- LoadModule cache_module modules/mod_cache.so<br />
- <IfDefine MemCache><br />
- <span class="indent">
- LoadModule mem_cache_module modules/mod_mem_cache.so<br />
- </span>
- </IfDefine><br />
- <IfDefine !MemCache><br />
- <span class="indent">
- LoadModule cache_disk_module modules/mod_cache_disk.so<br />
- </span>
- </IfDefine>
- </span>
- </IfDefine>
- </span>
- </IfDefine>
- </code></p></div>
+ <div class="example"><p><code>httpd -DReverseProxy -DUseCache -DMemCache ...</code></p></div>
+ <pre class="prettyprint lang-config">
+<IfDefine ReverseProxy>
+ LoadModule proxy_module modules/mod_proxy.so
+ LoadModule proxy_http_module modules/mod_proxy_http.so
+ <IfDefine UseCache>
+ LoadModule cache_module modules/mod_cache.so
+ <IfDefine MemCache>
+ LoadModule mem_cache_module modules/mod_mem_cache.so
+ </IfDefine>
+ <IfDefine !MemCache>
+ LoadModule cache_disk_module modules/mod_cache_disk.so
+ </IfDefine>
+ </IfDefine>
+</IfDefine>
+ </pre>
+
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Includes other configuration files from within
the server configuration files</td></tr>
-<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>Include [<var>optional</var>|<var>strict</var>] <var>file-path</var>|<var>directory-path</var>|<var>wildcard</var></code></td></tr>
+<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>Include <var>file-path</var>|<var>directory-path</var>|<var>wildcard</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Core</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>core</td></tr>
wildcard syntax shown below, to include files that match a particular
pattern, such as *.conf, for example.</p>
- <p>When a wildcard is specified for a <strong>file</strong> component of
- the path, and no file matches the wildcard, the
- <code class="directive"><a href="#include">Include</a></code>
- directive will be <strong>silently ignored</strong>. When a wildcard is
- specified for a <strong>directory</strong> component of the path, and
- no directory matches the wildcard, the
- <code class="directive"><a href="#include">Include</a></code> directive will
- <strong>fail with an error</strong> saying the directory cannot be found.
- </p>
-
- <p>For further control over the behaviour of the server when no files or
- directories match, prefix the path with the modifiers <var>optional</var>
- or <var>strict</var>. If <var>optional</var> is specified, any wildcard
- file or directory that does not match will be silently ignored. If
- <var>strict</var> is specified, any wildcard file or directory that does
- not match at least one file will cause server startup to fail.</p>
-
- <p>When a directory or file component of the path is
- specified exactly, and that directory or file does not exist,
- <code class="directive"><a href="#include">Include</a></code> directive will fail with an
- error saying the file or directory cannot be found.</p>
+ <p>The <code class="directive"><a href="#include">Include</a></code> directive will
+ <strong>fail with an error</strong> if a wildcard expression does not
+ match any file. The <code class="directive"><a href="#includeoptional">IncludeOptional</a></code>
+ directive can be used if non-matching wildcards should be ignored.</p>
<p>The file path specified may be an absolute path, or may be relative
to the <code class="directive"><a href="#serverroot">ServerRoot</a></code> directory.</p>
<p>Examples:</p>
- <div class="example"><p><code>
- Include /usr/local/apache2/conf/ssl.conf<br />
- Include /usr/local/apache2/conf/vhosts/*.conf
- </code></p></div>
+ <pre class="prettyprint lang-config">
+Include /usr/local/apache2/conf/ssl.conf
+Include /usr/local/apache2/conf/vhosts/*.conf
+ </pre>
+
<p>Or, providing paths relative to your <code class="directive"><a href="#serverroot">ServerRoot</a></code> directory:</p>
- <div class="example"><p><code>
- Include conf/ssl.conf<br />
- Include conf/vhosts/*.conf
- </code></p></div>
+ <pre class="prettyprint lang-config">
+Include conf/ssl.conf
+Include conf/vhosts/*.conf
+ </pre>
+
<p>Wildcards may be included in the directory or file portion of the
- path. In the following example, the server will fail to load if no
- directories match conf/vhosts/*, but will load successfully if no
- files match *.conf.</p>
+ path. This example will fail if there is no subdirectory in conf/vhosts
+ that contains at least one *.conf file:</p>
- <div class="example"><p><code>
- Include conf/vhosts/*/vhost.conf<br />
- Include conf/vhosts/*/*.conf
- </code></p></div>
+ <pre class="prettyprint lang-config">Include conf/vhosts/*/*.conf</pre>
- <p>In this example, the server will fail to load if either
- conf/vhosts/* matches no directories, or if *.conf matches no files:</p>
- <div class="example"><p><code>
- Include strict conf/vhosts/*/*.conf
- </code></p></div>
+ <p>Alternatively, the following command will just be ignored in case of
+ missing files or directories:</p>
+
+ <pre class="prettyprint lang-config">IncludeOptional conf/vhosts/*/*.conf</pre>
- <p>In this example, the server load successfully if either conf/vhosts/*
- matches no directories, or if *.conf matches no files:</p>
- <div class="example"><p><code>
- Include optional conf/vhosts/*/*.conf
- </code></p></div>
+<h3>See also</h3>
+<ul>
+<li><code class="directive"><a href="#includeoptional">IncludeOptional</a></code></li>
+<li><code class="program"><a href="../programs/apachectl.html">apachectl</a></code></li>
+</ul>
+</div>
+<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="directive-section"><h2><a name="IncludeOptional" id="IncludeOptional">IncludeOptional</a> <a name="includeoptional" id="includeoptional">Directive</a></h2>
+<table class="directive">
+<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Includes other configuration files from within
+the server configuration files</td></tr>
+<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>IncludeOptional <var>file-path</var>|<var>directory-path</var>|<var>wildcard</var></code></td></tr>
+<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory</td></tr>
+<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Core</td></tr>
+<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>core</td></tr>
+<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in 2.3.6 and later</td></tr>
+</table>
+ <p>This directive allows inclusion of other configuration files
+ from within the server configuration files. It works identically to the
+ <code class="directive"><a href="#include">Include</a></code> directive, with the
+ exception that if wildcards do not match any file or directory, the
+ <code class="directive"><a href="#includeoptional">IncludeOptional</a></code> directive will be
+ silently ignored instead of causing an error.</p>
<h3>See also</h3>
<ul>
+<li><code class="directive"><a href="#include">Include</a></code></li>
<li><code class="program"><a href="../programs/apachectl.html">apachectl</a></code></li>
</ul>
</div>
only to the methods <code>POST</code>, <code>PUT</code>, and
<code>DELETE</code>, leaving all other methods unprotected:</p>
- <div class="example"><p><code>
- <Limit POST PUT DELETE><br />
- <span class="indent">
- Require valid-user<br />
- </span>
- </Limit>
- </code></p></div>
+ <pre class="prettyprint lang-config">
+<Limit POST PUT DELETE>
+ Require valid-user
+</Limit>
+ </pre>
+
<p>The method names listed can be one or more of: <code>GET</code>,
<code>POST</code>, <code>PUT</code>, <code>DELETE</code>,
<code>Require group editors</code> directive will be ignored
in all cases:</p>
- <div class="example"><p><code>
- <LimitExcept GET>
- <span class="indent">
- Require valid-user
- </span>
- </LimitExcept><br />
- <Limit POST>
- <span class="indent">
- Require group editors
- </span>
- </Limit>
- </code></p></div>
+ <pre class="prettyprint lang-config">
+<LimitExcept GET>
+ Require valid-user
+</LimitExcept>
+<Limit POST>
+ Require group editors
+</Limit>
+ </pre>
+
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<p>For example:</p>
- <div class="example"><p><code>
- <LimitExcept POST GET><br />
- <span class="indent">
- Require valid-user<br />
- </span>
- </LimitExcept>
- </code></p></div>
+ <pre class="prettyprint lang-config">
+<LimitExcept POST GET>
+ Require valid-user
+</LimitExcept>
+ </pre>
+
</div>
determines, how deep subrequests may be nested. If you specify only one
<var>number</var>, it will be assigned to both limits.</p>
- <div class="example"><h3>Example</h3><p><code>
- LimitInternalRecursion 5
- </code></p></div>
+ <pre class="prettyprint lang-config">LimitInternalRecursion 5</pre>
+
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
location, and wish to limit the size of the uploaded file to 100K,
you might use the following directive:</p>
- <div class="example"><p><code>
- LimitRequestBody 102400
- </code></p></div>
+ <pre class="prettyprint lang-config">LimitRequestBody 102400</pre>
+
<div class="note"><p>For a full description of how this directive is interpreted by
proxy requests, see the <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code> documentation.</p>
<p>For example:</p>
- <div class="example"><p><code>
- LimitRequestFields 50
- </code></p></div>
+ <pre class="prettyprint lang-config">LimitRequestFields 50</pre>
+
<div class="warning"><h3>Warning</h3>
<p> When name-based virtual hosting is used, the value for this
directive is taken from the default (first-listed) virtual host for the
- local IP and port combination</p>.
+ local IP and port combination.</p>
</div>
that will be allowed in an HTTP request header.</p>
<p>The <code class="directive">LimitRequestFieldSize</code> directive
- allows the server administrator to reduce or increase the limit
+ allows the server administrator to set the limit
on the allowed size of an HTTP request header field. A server
needs this value to be large enough to hold any one header field
from a normal client request. The size of a normal request header
<p>For example:</p>
- <div class="example"><p><code>
- LimitRequestFieldSize 4094
- </code></p></div>
+ <pre class="prettyprint lang-config">LimitRequestFieldSize 4094</pre>
+
<div class="note">Under normal conditions, the value should not be changed from
the default.</div>
<div class="warning"><h3>Warning</h3>
<p> When name-based virtual hosting is used, the value for this
- directive is taken from the default (first-listed) virtual host best
+ directive is taken from the default (first-listed) virtual host best
matching the current IP address and port combination.</p>
</div>
allowed on the HTTP request-line.</p>
<p>The <code class="directive">LimitRequestLine</code> directive allows
- the server administrator to reduce or increase the limit on the allowed size
+ the server administrator to set the limit on the allowed size
of a client's HTTP request-line. Since the request-line consists of the
HTTP method, URI, and protocol version, the
<code class="directive">LimitRequestLine</code> directive places a
<p>For example:</p>
- <div class="example"><p><code>
- LimitRequestLine 4094
- </code></p></div>
+ <pre class="prettyprint lang-config">LimitRequestLine 4094</pre>
+
<div class="note">Under normal conditions, the value should not be changed from
- the default.</div>
+ the default. Also, you can't set this higher than 8190 without
+ modifying the source and rebuilding.</div>
<div class="warning"><h3>Warning</h3>
<p> When name-based virtual hosting is used, the value for this
- directive is taken from the default (first-listed) virtual host best
+ directive is taken from the default (first-listed) virtual host best
matching the current IP address and port combination.</p>
</div>
<p>Example:</p>
- <div class="example"><p><code>
- LimitXMLRequestBody 0
- </code></p></div>
+ <pre class="prettyprint lang-config">LimitXMLRequestBody 0</pre>
+
</div>
/private1, /private1/ and /private1/file.txt will have the enclosed
directives applied, but /private1other would not.
</p>
- <div class="example"><p><code>
- <Location /private1>
- ...
- </code></p></div>
+ <pre class="prettyprint lang-config">
+<Location /private1>
+ # ...
+</Location>
+ </pre>
+
<p>
In the example below, where a trailing slash is used, requests to
/private2/ and /private2/file.txt will have the enclosed
directives applied, but /private2 and /private2other would not.
</p>
- <div class="example"><p><code>
- <Location /private2<em>/</em>>
- ...
- </code></p></div>
+ <pre class="prettyprint lang-config">
+<Location /private2<em>/</em>>
+ # ...
+</Location>
+ </pre>
+
<div class="note"><h3>When to use <code class="directive"><Location></code></h3>
can also be used, with the addition of the <code>~</code>
character. For example:</p>
- <div class="example"><p><code>
- <Location ~ "/(extra|special)/data">
- </code></p></div>
+ <pre class="prettyprint lang-config">
+<Location ~ "/(extra|special)/data">
+ #...
+</Location>
+</pre>
+
<p>would match URLs that contained the substring <code>/extra/data</code>
or <code>/special/data</code>. The directive <code class="directive"><a href="#locationmatch"><LocationMatch></a></code> behaves
directive. For example, to enable status requests, but allow them
only from browsers at <code>example.com</code>, you might use:</p>
- <div class="example"><p><code>
- <Location /status><br />
- <span class="indent">
- SetHandler server-status<br />
- Require host example.com<br />
- </span>
- </Location>
- </code></p></div>
+ <pre class="prettyprint lang-config">
+<Location /status>
+ SetHandler server-status
+ Require host example.com
+</Location>
+ </pre>
+
<div class="note"><h3>Note about / (slash)</h3>
<p>The slash character has special meaning depending on where in a
it takes a <a class="glossarylink" href="../glossary.html#regex" title="see glossary">regular expression</a>
as an argument instead of a simple string. For example:</p>
- <div class="example"><p><code>
- <LocationMatch "/(extra|special)/data">
- </code></p></div>
+ <pre class="prettyprint lang-config">
+<LocationMatch "/(extra|special)/data">
+ # ...
+</LocationMatch>
+</pre>
+
<p>would match URLs that contained the substring <code>/extra/data</code>
or <code>/special/data</code>.</p>
<p>For example:</p>
- <div class="example"><p><code>
- LogLevel notice
- </code></p></div>
+ <pre class="prettyprint lang-config">LogLevel notice</pre>
+
<div class="note"><h3>Note</h3>
<p>When logging to a regular file messages of the level
as module specification. This means the following three specifications
are equivalent:</p>
- <div class="example"><p><code>
- LogLevel info ssl:warn<br />
- LogLevel info mod_ssl.c:warn<br />
- LogLevel info ssl_module:warn<br />
- </code></p></div>
+ <pre class="prettyprint lang-config">
+LogLevel info ssl:warn
+LogLevel info mod_ssl.c:warn
+LogLevel info ssl_module:warn
+ </pre>
+
<p>It is also possible to change the level per directory:</p>
- <div class="example"><p><code>
- LogLevel info<br />
- <Directory /usr/local/apache/htdocs/app><br />
- LogLevel debug<br />
- </Files>
- </code></p></div>
+ <pre class="prettyprint lang-config">
+LogLevel info
+<Directory "/usr/local/apache/htdocs/app">
+ LogLevel debug
+</Directory>
+ </pre>
+
<div class="note">
Per directory loglevel configuration only affects messages that are
<p>For example:</p>
- <div class="example"><p><code>
- MaxKeepAliveRequests 500
- </code></p></div>
+ <pre class="prettyprint lang-config">MaxKeepAliveRequests 500</pre>
+
+
+</div>
+<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="directive-section"><h2><a name="MaxRangeOverlaps" id="MaxRangeOverlaps">MaxRangeOverlaps</a> <a name="maxrangeoverlaps" id="maxrangeoverlaps">Directive</a></h2>
+<table class="directive">
+<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Number of overlapping ranges (eg: <code>100-200,150-300</code>) allowed before returning the complete
+ resource </td></tr>
+<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>MaxRangeOverlaps default | unlimited | none | <var>number-of-ranges</var></code></td></tr>
+<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>MaxRangeOverlaps 20</code></td></tr>
+<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory</td></tr>
+<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Core</td></tr>
+<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>core</td></tr>
+<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache HTTP Server 2.3.15 and later</td></tr>
+</table>
+ <p>The <code class="directive">MaxRangeOverlaps</code> directive
+ limits the number of overlapping HTTP ranges the server is willing to
+ return to the client. If more overlapping ranges then permitted are requested,
+ the complete resource is returned instead.</p>
+
+ <dl>
+ <dt><strong>default</strong></dt>
+ <dd>Limits the number of overlapping ranges to a compile-time default of 20.</dd>
+
+ <dt><strong>none</strong></dt>
+ <dd>No overlapping Range headers are allowed.</dd>
+
+ <dt><strong>unlimited</strong></dt>
+ <dd>The server does not limit the number of overlapping ranges it is
+ willing to satisfy.</dd>
+
+ <dt><var>number-of-ranges</var></dt>
+ <dd>A positive number representing the maximum number of overlapping ranges the
+ server is willing to satisfy.</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="MaxRangeReversals" id="MaxRangeReversals">MaxRangeReversals</a> <a name="maxrangereversals" id="maxrangereversals">Directive</a></h2>
+<table class="directive">
+<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Number of range reversals (eg: <code>100-200,50-70</code>) allowed before returning the complete
+ resource </td></tr>
+<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>MaxRangeReversals default | unlimited | none | <var>number-of-ranges</var></code></td></tr>
+<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>MaxRangeReversals 20</code></td></tr>
+<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory</td></tr>
+<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Core</td></tr>
+<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>core</td></tr>
+<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache HTTP Server 2.3.15 and later</td></tr>
+</table>
+ <p>The <code class="directive">MaxRangeReversals</code> directive
+ limits the number of HTTP Range reversals the server is willing to
+ return to the client. If more ranges reversals then permitted are requested,
+ the complete resource is returned instead.</p>
+
+ <dl>
+ <dt><strong>default</strong></dt>
+ <dd>Limits the number of range reversals to a compile-time default of 20.</dd>
+
+ <dt><strong>none</strong></dt>
+ <dd>No Range reversals headers are allowed.</dd>
+
+ <dt><strong>unlimited</strong></dt>
+ <dd>The server does not limit the number of range reversals it is
+ willing to satisfy.</dd>
+
+ <dt><var>number-of-ranges</var></dt>
+ <dd>A positive number representing the maximum number of range reversals the
+ server is willing to satisfy.</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="MaxRanges" id="MaxRanges">MaxRanges</a> <a name="maxranges" id="maxranges">Directive</a></h2>
+<table class="directive">
+<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Number of ranges allowed before returning the complete
+resource </td></tr>
+<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>MaxRanges default | unlimited | none | <var>number-of-ranges</var></code></td></tr>
+<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>MaxRanges 200</code></td></tr>
+<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory</td></tr>
+<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Core</td></tr>
+<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>core</td></tr>
+<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache HTTP Server 2.3.15 and later</td></tr>
+</table>
+ <p>The <code class="directive">MaxRanges</code> directive
+ limits the number of HTTP ranges the server is willing to
+ return to the client. If more ranges then permitted are requested,
+ the complete resource is returned instead.</p>
+
+ <dl>
+ <dt><strong>default</strong></dt>
+ <dd>Limits the number of ranges to a compile-time default of 200.</dd>
+
+ <dt><strong>none</strong></dt>
+ <dd>Range headers are ignored.</dd>
+
+ <dt><strong>unlimited</strong></dt>
+ <dd>The server does not limit the number of ranges it is
+ willing to satisfy.</dd>
+
+ <dt><var>number-of-ranges</var></dt>
+ <dd>A positive number representing the maximum number of ranges the
+ server is willing to satisfy.</dd>
+ </dl>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<p>With the file-based mechanisms <em>fcntl</em> and <em>flock</em>,
the path, if provided, is a directory where the lock file will be created.
- The default directory is httpd's run-time file directory relative to
- <code class="directive"><a href="#serverroot">ServerRoot</a></code>. Always use a local disk
- filesystem for <code>/path/to/mutex</code> and never a directory residing
+ The default directory is httpd's run-time file directory,
+ <code class="directive"><a href="#defaultruntimedir">DefaultRuntimeDir</a></code>. If a relative
+ path is provided, it is relative to
+ <code class="directive"><a href="#defaultruntimedir">DefaultRuntimeDir</a></code>. Always use a local
+ disk filesystem for <code>/path/to/mutex</code> and never a directory residing
on a NFS- or AFS-filesystem. The basename of the file will be the mutex
type, an optional instance string provided by the module, and unless the
<code>OmitPID</code> keyword is specified, the process id of the httpd
<code>/var/httpd/locks</code>. The mutex mechanism for all other mutexes
will be changed from the compiled-in default to <code>sysvsem</code>.</p>
- <div class="example"><p><code>
- Mutex default sysvsem<br />
- Mutex mpm-accept fcntl:/var/httpd/locks
- </code></p></div>
+ <pre class="prettyprint lang-config">
+Mutex sysvsem default
+Mutex fcntl:/var/httpd/locks mpm-accept
+ </pre>
+
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="NameVirtualHost" id="NameVirtualHost">NameVirtualHost</a> <a name="namevirtualhost" id="namevirtualhost">Directive</a></h2>
<table class="directive">
-<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Designates an IP address for name-virtual
+<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>DEPRECATED: Designates an IP address for name-virtual
hosting</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>NameVirtualHost <var>addr</var>[:<var>port</var>]</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr>
<div class="note">
<p>Even though the server follows the symlink it does <em>not</em>
change the pathname used to match against <code class="directive"><a href="#directory"><Directory></a></code> sections.</p>
- <p>Note also, that this option <strong>gets ignored</strong> if set
- inside a <code class="directive"><a href="#location"><Location></a></code>
- section.</p>
+
+ <p>The <code>FollowSymLinks</code> and
+ <code>SymLinksIfOwnerMatch</code> <code class="directive"><a href="#options">Options</a></code> work only in <code class="directive"><a href="#directory"><Directory></a></code> sections or
+ <code>.htaccess</code> files.</p>
+
<p>Omitting this option should not be considered a security restriction,
since symlink testing is subject to race conditions that make it
circumventable.</p>
target file or directory is owned by the same user id as the
link.
- <div class="note"><h3>Note</h3> <p>This option gets ignored if
- set inside a <code class="directive"><a href="#location"><Location></a></code> section.</p>
+ <div class="note"><h3>Note</h3>
+ <p>The <code>FollowSymLinks</code> and
+ <code>SymLinksIfOwnerMatch</code> <code class="directive"><a href="#options">Options</a></code> work only in <code class="directive"><a href="#directory"><Directory></a></code> sections or
+ <code>.htaccess</code> files.</p>
+
<p>This option should not be considered a security restriction,
since symlink testing is subject to race conditions that make it
- circumventable.</p></div>
- </dd>
+ circumventable.</p>
+ </div> </dd>
</dl>
<p>Normally, if multiple <code class="directive">Options</code> could
<p>For example, without any <code>+</code> and <code>-</code> symbols:</p>
- <div class="example"><p><code>
- <Directory /web/docs><br />
- <span class="indent">
- Options Indexes FollowSymLinks<br />
- </span>
- </Directory><br />
- <br />
- <Directory /web/docs/spec><br />
- <span class="indent">
- Options Includes<br />
- </span>
- </Directory>
- </code></p></div>
+ <pre class="prettyprint lang-config">
+<Directory "/web/docs">
+ Options Indexes FollowSymLinks
+</Directory>
+
+<Directory "/web/docs/spec">
+ Options Includes
+</Directory>
+ </pre>
+
<p>then only <code>Includes</code> will be set for the
<code>/web/docs/spec</code> directory. However if the second
<code class="directive">Options</code> directive uses the <code>+</code> and
<code>-</code> symbols:</p>
- <div class="example"><p><code>
- <Directory /web/docs><br />
- <span class="indent">
- Options Indexes FollowSymLinks<br />
- </span>
- </Directory><br />
- <br />
- <Directory /web/docs/spec><br />
- <span class="indent">
- Options +Includes -Indexes<br />
- </span>
- </Directory>
- </code></p></div>
+ <pre class="prettyprint lang-config">
+<Directory "/web/docs">
+ Options Indexes FollowSymLinks
+</Directory>
+
+<Directory "/web/docs/spec">
+ Options +Includes -Indexes
+</Directory>
+ </pre>
+
<p>then the options <code>FollowSymLinks</code> and
<code>Includes</code> are set for the <code>/web/docs/spec</code>
<p>For example, if you are running <code>https</code> on a non-standard port, specify the protocol explicitly:</p>
- <div class="example"><p><code>
- Protocol https
- </code></p></div>
+ <pre class="prettyprint lang-config">Protocol https</pre>
+
<p>You can also specify the protocol using the <code class="directive"><a href="../mod/mpm_common.html#listen">Listen</a></code> directive.</p>
<h3>See also</h3>
<ul>
-<li><code class="directive">AcceptFilter</code></li>
+<li><code class="directive"><a href="#acceptfilter">AcceptFilter</a></code></li>
<li><code class="directive"><a href="../mod/mpm_common.html#listen">Listen</a></code></li>
</ul>
+</div>
+<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="directive-section"><h2><a name="RegisterHttpMethod" id="RegisterHttpMethod">RegisterHttpMethod</a> <a name="registerhttpmethod" id="registerhttpmethod">Directive</a></h2>
+<table class="directive">
+<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Register non-standard HTTP methods</td></tr>
+<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>RegisterHttpMethod <var>method</var> [<var>method</var> [...]]</code></td></tr>
+<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr>
+<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Core</td></tr>
+<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>core</td></tr>
+</table>
+<p>HTTP Methods that are not conforming to the relvant RFCs are normally
+rejected by request processing in Apache HTTPD. To avoid this, modules
+can register non-standard HTTP methods they support.
+The <code class="directive">RegisterHttpMethod</code> allows to register such
+methods manually. This can be useful for if such methods are forwared
+for external processing, e.g. to a CGI script.</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="RLimitCPU" id="RLimitCPU">RLimitCPU</a> <a name="rlimitcpu" id="rlimitcpu">Directive</a></h2>
by the shebang line (first line, starting with <code>#!</code>) in the
script. On Win32 systems this line usually looks like:</p>
- <div class="example"><p><code>
- #!C:/Perl/bin/perl.exe
- </code></p></div>
+ <pre class="prettyprint lang-perl">#!C:/Perl/bin/perl.exe</pre>
+
<p>or, if <code>perl</code> is in the <code>PATH</code>, simply:</p>
- <div class="example"><p><code>
- #!perl
- </code></p></div>
+ <pre class="prettyprint lang-perl">#!perl</pre>
+
<p>Setting <code>ScriptInterpreterSource Registry</code> will
cause the Windows Registry tree <code>HKEY_CLASSES_ROOT</code> to be
<p>It may be worth setting up a dedicated address for this, e.g.</p>
- <div class="example"><p><code>
- ServerAdmin www-admin@foo.example.com
- </code></p></div>
+ <pre class="prettyprint lang-config">ServerAdmin www-admin@foo.example.com</pre>
+
<p>as users do not always mention that they are talking about the
server!</p>
alternate names for a host, for use with <a href="../vhosts/name-based.html">name-based virtual hosts</a>. The
<code class="directive">ServerAlias</code> may include wildcards, if appropriate.</p>
- <div class="example"><p><code>
- <VirtualHost *:80><br />
- ServerName server.example.com<br />
- ServerAlias server server2.example.com server2<br />
- ServerAlias *.example.com<br />
- UseCanonicalName Off<br />
- # ...<br />
- </VirtualHost>
- </code></p></div>
+ <pre class="prettyprint lang-config">
+<VirtualHost *:80>
+ ServerName server.example.com
+ ServerAlias server server2.example.com server2
+ ServerAlias *.example.com
+ UseCanonicalName Off
+ # ...
+</VirtualHost>
+ </pre>
+
+
+ <p>Name-based virtual hosts for the best-matching set of <code class="directive"><a href="#virtualhost"><virtualhost></a></code>s are processed
+ in the order they appear in the configuration. The first matching <code class="directive"><a href="#servername">ServerName</a></code> or <code class="directive"><a href="#serveralias">ServerAlias</a></code> is used, with no different precedence for wildcards
+ (nor for ServerName vs. ServerAlias). </p>
+
+ <p>The complete list of names in the <code class="directive">VirtualHost</code>
+ directive are treated just like a (non wildcard)
+ <code class="directive">ServerAlias</code>.</p>
+
<h3>See also</h3>
<ul>
and you wish the web server to be so identified, the following
directive should be used:</p>
- <div class="example"><p><code>
- ServerName www.example.com
- </code></p></div>
+ <pre class="prettyprint lang-config">ServerName www.example.com</pre>
+
<p>The <code class="directive">ServerName</code> directive
may appear anywhere within the definition of a server. However,
paths in other configuration directives (such as <code class="directive"><a href="#include">Include</a></code> or <code class="directive"><a href="../mod/mod_so.html#loadmodule">LoadModule</a></code>, for example) are taken as
relative to this directory.</p>
- <div class="example"><h3>Example</h3><p><code>
- ServerRoot /home/httpd
- </code></p></div>
+ <pre class="prettyprint lang-config">ServerRoot "/home/httpd"</pre>
+
+
+ <p>The default location of <code class="directive">ServerRoot</code> may be
+ modified by using the <code>--prefix</code> argument to
+ <a href="../programs/configure.html"><code>configure</code></a>, and
+ most third-party distributions of the server have a different
+ default location from the one listed above.</p>
<h3>See also</h3>
<dl>
<dt><code>ServerTokens Full</code> (or not specified)</dt>
- <dd>Server sends (<em>e.g.</em>): <code>Server: Apache/2.4.1
+ <dd>Server sends (<em>e.g.</em>): <code>Server: Apache/2.4.2
(Unix) PHP/4.2.2 MyMod/1.2</code></dd>
<dt><code>ServerTokens Prod[uctOnly]</code></dt>
<dt><code>ServerTokens Min[imal]</code></dt>
<dd>Server sends (<em>e.g.</em>): <code>Server:
- Apache/2.4.1</code></dd>
+ Apache/2.4.2</code></dd>
<dt><code>ServerTokens OS</code></dt>
- <dd>Server sends (<em>e.g.</em>): <code>Server: Apache/2.4.1
+ <dd>Server sends (<em>e.g.</em>): <code>Server: Apache/2.4.2
(Unix)</code></dd>
</dl>
of extension, you might put the following into an
<code>.htaccess</code> file in that directory:</p>
- <div class="example"><p><code>
- SetHandler imap-file
- </code></p></div>
+ <pre class="prettyprint lang-config">SetHandler imap-file</pre>
+
<p>Another example: if you wanted to have the server display a
status report whenever a URL of
<code>http://servername/status</code> was called, you might put
the following into <code>httpd.conf</code>:</p>
- <div class="example"><p><code>
- <Location /status><br />
- <span class="indent">
- SetHandler server-status<br />
- </span>
- </Location>
- </code></p></div>
+ <pre class="prettyprint lang-config">
+<Location "/status">
+ SetHandler server-status
+</Location>
+ </pre>
+
+
+ <p>You could also use this directive to configure a particular
+ handler for files with a particular file extension. For example:</p>
+
+ <pre class="prettyprint lang-config">
+<FilesMatch \.php$>
+ SetHandler application/x-httpd-php
+</FilesMatch>
+ </pre>
+
<p>You can override an earlier defined <code class="directive">SetHandler</code>
directive by using the value <code>None</code>.</p>
- <p><strong>Note:</strong> because SetHandler overrides default handlers,
- normal behaviour such as handling of URLs ending in a slash (/) as
- directories or index files is suppressed.</p>
+
+ <div class="note"><h3>Note</h3>
+ <p>Because <code class="directive">SetHandler</code> overrides default handlers,
+ normal behavior such as handling of URLs ending in a slash (/) as
+ directories or index files is suppressed.</p></div>
<h3>See also</h3>
<ul>
in the <code>/www/data/</code> directory for server-side
includes.</p>
- <div class="example"><p><code>
- <Directory /www/data/><br />
- <span class="indent">
- SetOutputFilter INCLUDES<br />
- </span>
- </Directory>
- </code></p></div>
+ <pre class="prettyprint lang-config">
+<Directory "/www/data/">
+ SetOutputFilter INCLUDES
+</Directory>
+ </pre>
+
<p>If more than one filter is specified, they must be separated
by semicolons in the order in which they should process the
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Amount of time the server will wait for
certain events before failing a request</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>TimeOut <var>seconds</var></code></td></tr>
-<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>TimeOut 300</code></td></tr>
+<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>TimeOut 60</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Core</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>core</td></tr>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="TraceEnable" id="TraceEnable">TraceEnable</a> <a name="traceenable" id="traceenable">Directive</a></h2>
<table class="directive">
-<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Determines the behaviour on <code>TRACE</code> requests</td></tr>
+<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Determines the behavior on <code>TRACE</code> requests</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>TraceEnable <var>[on|off|extended]</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>TraceEnable on</code></td></tr>
-<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr>
+<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Core</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>core</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache HTTP Server 1.3.34, 2.0.55 and later</td></tr>
reflect the full headers and all chunk headers with the response
body. As a proxy server, the request body is not restricted to 64k.</p>
+ <div class="note"><h3>Note</h3>
+ <p>Despite claims to the contrary, <code>TRACE</code> is not
+ a security vulnerability and there is no viable reason for
+ it to be disabled. Doing so necessarily makes your server
+ non-compliant.</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="UnDefine" id="UnDefine">UnDefine</a> <a name="undefine" id="undefine">Directive</a></h2>
<code>http://www.example.com/splat/</code>. If you have
authentication enabled, this will cause the user to have to
authenticate twice (once for <code>www</code> and once again
- for <code>www.example.com</code> -- see <a href="http://httpd.apache.org/docs/misc/FAQ.html#prompted-twice">the
- FAQ on this subject for more information</a>). But if
+ for <code>www.example.com</code> -- see <a href="http://wiki.apache.org/httpd/FAQ#Why_does_Apache_ask_for_my_password_twice_before_serving_a_file.3F">
+ the FAQ on this subject for more information</a>). But if
<code class="directive">UseCanonicalName</code> is set <code>Off</code>, then
Apache httpd will redirect to <code>http://www/splat/</code>.</p>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="UseCanonicalPhysicalPort" id="UseCanonicalPhysicalPort">UseCanonicalPhysicalPort</a> <a name="usecanonicalphysicalport" id="usecanonicalphysicalport">Directive</a></h2>
<table class="directive">
-<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Configures how the server determines its own name and
-port</td></tr>
+<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Configures how the server determines its own port</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>UseCanonicalPhysicalPort On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>UseCanonicalPhysicalPort Off</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory</td></tr>
relying on all configured information to construct a valid port number.</p>
<div class="note"><h3>Note</h3>
- <p>The ordering of when the physical port is used is as follows:<br /><br />
- <code>UseCanonicalName On</code></p>
- <ul>
- <li>Port provided in <code>Servername</code></li>
+ <p>The ordering of the lookup when the physical port is used is as
+ follows:</p>
+ <dl>
+ <dt><code>UseCanonicalName On</code></dt>
+ <dd>
+ <ol>
+ <li>Port provided in <code class="directive"><a href="#servername">Servername</a></code></li>
<li>Physical port</li>
<li>Default port</li>
- </ul>
- <code>UseCanonicalName Off | DNS</code>
- <ul>
+ </ol>
+ </dd>
+ <dt><code>UseCanonicalName Off | DNS</code></dt>
+ <dd>
+ <ol>
<li>Parsed port from <code>Host:</code> header</li>
<li>Physical port</li>
- <li>Port provided in <code>Servername</code></li>
+ <li>Port provided in <code class="directive"><a href="#servername">Servername</a></code></li>
<li>Default port</li>
- </ul>
+ </ol>
+ </dd>
+ </dl>
<p>With <code>UseCanonicalPhysicalPort Off</code>, the
physical ports are removed from the ordering.</p>
<li>A fully qualified domain name for the IP address of the
virtual host (not recommended);</li>
- <li>The character <code>*</code>, which acts as a wildcard and matches
+ <li>The character <code>*</code>, which acts as a wildcard and matches
any IP address.</li>
-
+
<li>The string <code>_default_</code>, which is an alias for <code>*</code></li>
</ul>
- <div class="example"><h3>Example</h3><p><code>
- <VirtualHost 10.1.2.3:80><br />
- <span class="indent">
- ServerAdmin webmaster@host.example.com<br />
- DocumentRoot /www/docs/host.example.com<br />
- ServerName host.example.com<br />
- ErrorLog logs/host.example.com-error_log<br />
- TransferLog logs/host.example.com-access_log<br />
- </span>
- </VirtualHost>
- </code></p></div>
+ <pre class="prettyprint lang-config">
+<VirtualHost 10.1.2.3:80>
+ ServerAdmin webmaster@host.example.com
+ DocumentRoot /www/docs/host.example.com
+ ServerName host.example.com
+ ErrorLog logs/host.example.com-error_log
+ TransferLog logs/host.example.com-access_log
+</VirtualHost>
+ </pre>
+
<p>IPv6 addresses must be specified in square brackets because
the optional port number could not be determined otherwise. An
IPv6 example is shown below:</p>
- <div class="example"><p><code>
- <VirtualHost [2001:db8::a00:20ff:fea7:ccea]:80><br />
- <span class="indent">
- ServerAdmin webmaster@host.example.com<br />
- DocumentRoot /www/docs/host.example.com<br />
- ServerName host.example.com<br />
- ErrorLog logs/host.example.com-error_log<br />
- TransferLog logs/host.example.com-access_log<br />
- </span>
- </VirtualHost>
- </code></p></div>
+ <pre class="prettyprint lang-config">
+<VirtualHost [2001:db8::a00:20ff:fea7:ccea]:80>
+ ServerAdmin webmaster@host.example.com
+ DocumentRoot /www/docs/host.example.com
+ ServerName host.example.com
+ ErrorLog logs/host.example.com-error_log
+ TransferLog logs/host.example.com-access_log
+</VirtualHost>
+ </pre>
+
<p>Each Virtual Host must correspond to a different IP address,
different port number or a different host name for the server,
<code class="directive"><a href="#servername">ServerName</a></code> from the "main"
server configuration will be inherited.</p>
- <p>When a request is received, the server first maps it to the best matching
- <code class="directive"><VirtualHost></code> based on the local
- IP address and port combination only. Non-wildcards have a higher
- precedence. If no match based on IP and port occurs at all, the
+ <p>When a request is received, the server first maps it to the best matching
+ <code class="directive"><VirtualHost></code> based on the local
+ IP address and port combination only. Non-wildcards have a higher
+ precedence. If no match based on IP and port occurs at all, the
"main" server configuration is used.</p>
-
+
<p>If multiple virtual hosts contain the best matching IP address and port,
- the server selects from these virtual hosts the best match based on the
- requested hostname. If no matching name-based virtual host is found,
- then the first listed virtual host that matched the IP address will be
+ the server selects from these virtual hosts the best match based on the
+ requested hostname. If no matching name-based virtual host is found,
+ then the first listed virtual host that matched the IP address will be
used. As a consequence, the first listed virtual host for a given IP address
- and port combination is default virtual host for that IP and port
+ and port combination is default virtual host for that IP and port
combination.</p>
<div class="warning"><h3>Security</h3>
<a href="../fr/mod/core.html" hreflang="fr" rel="alternate" title="Français"> fr </a> |
<a href="../ja/mod/core.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
<a href="../tr/mod/core.html" hreflang="tr" rel="alternate" title="Türkçe"> tr </a></p>
-</div><div id="footer">
-<p class="apache">Copyright 2010 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>
+</div><div class="top"><a href="#page-header"><img src="../images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Comments</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div>
+<script type="text/javascript"><!--//--><![CDATA[//><!--
+var comments_shortname = 'httpd';
+var comments_identifier = 'http://httpd.apache.org/docs/trunk/mod/core.html';
+(function(w, d) {
+ if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
+ d.write('<div id="comments_thread"><\/div>');
+ var s = d.createElement('script');
+ s.type = 'text/javascript';
+ s.async = true;
+ s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
+ (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
+ }
+ else {
+ d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
+ }
+})(window, document);
+//--><!]]></script></div><div id="footer">
+<p class="apache">Copyright 2012 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="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
+if (typeof(prettyPrint) !== 'undefined') {
+ prettyPrint();
+}
+//--><!]]></script>
</body></html>
\ No newline at end of file