<div class="toplang">
<p><span>Available Languages: </span><a href="../de/mod/core.html" hreflang="de" rel="alternate" title="Deutsch"> de </a> |
<a href="../en/mod/core.html" title="English"> en </a> |
+<a href="../es/mod/core.html" hreflang="es" rel="alternate" title="Español"> es </a> |
<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>
<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="#defaulttype">DefaultType</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="#errordocument">ErrorDocument</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#errorlog">ErrorLog</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#errorlogformat">ErrorLogFormat</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#files"><Files></a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#filesmatch"><FilesMatch></a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#forcetype">ForceType</a></li>
+<li><img alt="" src="../images/down.gif" /> <a href="#gprofdir">GprofDir</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#hostnamelookups">HostnameLookups</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#if"><If></a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#ifdefine"><IfDefine></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="#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>
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache httpd 2.1.5 and later.
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 Protocol 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">
- FreeBSD's Accept Filters</a>, Linux's more primitive
+ <p>This directive enables operating system specific optimizations for a
+ 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">
+ FreeBSD's Accept Filters</a>, Linux's more primitive
<code>TCP_DEFER_ACCEPT</code>, and Windows' optimized AcceptEx()
are currently supported.</p>
- <p>Using <code>none</code> for an argument will disable any accept filters
+ <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>
+ <p>The default protocol names are <code>https</code> for port 443
+ and <code>http</code> for all other ports. To specify another protocol
+ is being used with a listening port, add the <var>protocol</var>
+ argument to the <code class="directive"><a href="../mod/mpm_common.html#listen">Listen</a></code>
+ 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>
-
+
<p>The <code>httpready</code> accept filter buffers entire HTTP requests at
- the kernel level. Once an entire request is received, the kernel then
- sends it to the server. See the
+ the kernel level. Once an entire request is received, the kernel then
+ sends it to the server. See the
<a href="http://www.freebsd.org/cgi/man.cgi?query=accf_http&sektion=9">
- accf_http(9)</a> man page for more details. Since HTTPS requests are
+ accf_http(9)</a> man page for more details. Since HTTPS requests are
encrypted only the <a href="http://www.freebsd.org/cgi/man.cgi?query=accf_data&sektion=9">
accf_data(9)</a> filter is used.</p>
</code></p></div>
<p>Linux's <code>TCP_DEFER_ACCEPT</code> does not support buffering http
- requests. Any value besides <code>none</code> will enable
+ requests. Any value besides <code>none</code> will enable
<code>TCP_DEFER_ACCEPT</code> on that listener. For more details
- see the Linux
+ see the Linux
<a href="http://homepages.cwi.nl/~aeb/linux/man2html/man7/tcp.7.html">
tcp(7)</a> man page.</p>
the <code>connect</code> option does not wait for the initial data
transmission.</p>
- <p>On Windows, <code>none</code> uses accept() rather than than AcceptEx()
+ <p>On Windows, <code>none</code> uses accept() rather than AcceptEx()
and will not recycle sockets between connections. This is useful for
network adapters with broken driver support, as well as some virtual
network providers such as vpn drivers, or spam, virus or spyware
- filters.</p>
+ filters.</p>
+<h3>See also</h3>
+<ul>
+<li><code class="directive">Protocol</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="AcceptPathInfo" id="AcceptPathInfo">AcceptPathInfo</a> <a name="acceptpathinfo" id="acceptpathinfo">Directive</a></h2>
<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>.htaccess</code> files</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AllowOverride All|None|<var>directive-type</var>
[<var>directive-type</var>] ...</code></td></tr>
-<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>AllowOverride All</code></td></tr>
+<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>AllowOverride None (2.3.9 and later), AllowOverride All (2.3.8 and earlier)</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>
<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
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>
+ </dd>
</dl>
<p>Example:</p>
server error.</p>
<div class="note"><p>For security and performance reasons, do not set
- <code>AllowOverride</code> to anything other than <code>None</code>
+ <code>AllowOverride</code> to anything other than <code>None</code>
in your <code><Directory /></code> block. Instead, find (or
create) the <code><Directory></code> block that refers to the
directory where you're actually planning to place a
<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>
+
+ <div class="example"><p><code>
+ AllowOverride None
+ AllowOverrideList Redirect RedirectMatch
+ </code></p></div>
+
+ <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>
+
+ <div class="example"><p><code>
+ AllowOverride AuthConfig
+ AllowOverrideList CookieTracking CookieName
+ </code></p></div>
+
+ <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 directves 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>
<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>
+
+ <div class="example"><p><code>
+ <IfDefine TEST><br />
+ Define servername test.example.com<br />
+ </IfDefine><br />
+ <IfDefine !TEST><br />
+ Define servername www.example.com<br />
+ Define SSL<br />
+ </IfDefine><br />
+ </code></p></div>
+
+ <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>
<div class="directive-section"><h2><a name="Directory" id="Directory"><Directory></a> <a name="directory" id="directory">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Enclose a group of directives that apply only to the
-named file-system directory and sub-directories</td></tr>
+named file-system directory, sub-directories, and their contents.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code><Directory <var>directory-path</var>>
... </Directory></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
</table>
<p><code class="directive"><Directory></code> and
<code></Directory></code> are used to enclose a group of
- directives that will apply only to the named directory and
- sub-directories of that directory. Any directive that is allowed
+ directives that will apply only to the named directory,
+ sub-directories of that directory, and the files within the respective
+ directories. Any directive that is allowed
in a directory context may be used. <var>Directory-path</var> is
either the full path to a directory, or a wild-card string using
Unix shell-style matching. In a wild-card string, <code>?</code> matches
</span>
</Directory><br />
<br />
- <Directory /home/><br />
+ <Directory /home><br />
<span class="indent">
AllowOverride FileInfo<br />
</span>
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 />
+ Require all denied<br />
</span>
</Directory>
</code></p></div>
<div class="directive-section"><h2><a name="DirectoryMatch" id="DirectoryMatch"><DirectoryMatch></a> <a name="directorymatch" id="directorymatch">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Enclose directives that apply to
-file-system directories matching a regular expression.</td></tr>
+the contents of file-system directories matching a regular expression.</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code><DirectoryMatch <var>regex</var>>
... </DirectoryMatch></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
</table>
<p><code class="directive"><DirectoryMatch></code> and
<code></DirectoryMatch></code> are used to enclose a group
- of directives which will apply only to the named directory,
- the same as <code class="directive"><a href="#directory"><Directory></a></code>.
- However, it takes as an argument a
+ of directives which will apply only to the named directory (and the files within),
+ the same as <code class="directive"><a href="#directory"><Directory></a></code>.
+ 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>
</div>
<div class="note"><h3>Trailing Slash</h3>
- This directive applies to requests for directories that may or may
- not end in a trailing slash, so expressions that are anchored to the
+ This directive applies to requests for directories that may or may
+ not end in a trailing slash, so expressions that are anchored to the
end of line ($) must be written with care.
</div>
</code></p></div>
<p>then an access to
- <code>http://www.my.host.com/index.html</code> refers to
- <code>/usr/web/index.html</code>. If the <var>directory-path</var> is
+ <code>http://my.example.com/index.html</code> refers to
+ <code>/usr/web/index.html</code>. If the <var>directory-path</var> is
not absolute then it is assumed to be relative to the <code class="directive"><a href="#serverroot">ServerRoot</a></code>.</p>
<p>The <code class="directive">DocumentRoot</code> should be specified without
</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>
+
+ <div class="example"><p><code>
+ <If "-z req('Host')"><br />
+ ...<br />
+ </If><br />
+ <Else><br />
+ ...<br />
+ </Else><br />
+ </code></p></div>
+
+ <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>
+
+ <div class="example"><p><code>
+ <If "-R '10.1.0.0/16'"><br />
+ ...<br />
+ </If><br />
+ <ElseIf "-R '10.0.0.0/8'"><br />
+ ...<br />
+ </ElseIf><br />
+ <Else><br />
+ ...<br />
+ </Else><br />
+ </code></p></div>
+
+ <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>
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>
</code></p></div>
<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_disk_cache.html">mod_disk_cache</a></code>.
+ <code class="module"><a href="../mod/mod_cache_disk.html">mod_cache_disk</a></code>.
Only global definition of <code class="directive">EnableSendfile</code>
is taken into account by the module.
</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="Error" id="Error">Error</a> <a name="error" id="error">Directive</a></h2>
+<table class="directive">
+<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Abort configuration parsing with a custom error message</td></tr>
+<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>Error <var>message</var></code></td></tr>
+<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
+<tr><th><a href="directive-dict.html#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>2.3.9 and later</td></tr>
+</table>
+ <p>If an error can be detected within the configuration, this
+ directive can be used to generate a custom error message, and halt
+ 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>
+
+
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ErrorDocument" id="ErrorDocument">ErrorDocument</a> <a name="errordocument" id="errordocument">Directive</a></h2>
<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>Quoting syntax for text messages is different in Apache HTTP Server
-2.0</td></tr>
</table>
<p>In the event of a problem or error, Apache httpd can be configured
to do one of four things,</p>
will be immediately halted and the internal error message returned.
This is necessary to guard against security problems caused by
bad requests.</p>
-
+
<p>If you are using mod_proxy, you may wish to enable
<code class="directive"><a href="../mod/mod_proxy.html#proxyerroroverride">ProxyErrorOverride</a></code> so that you can provide
custom error messages on behalf of your Origin servers. If you don't enable ProxyErrorOverride,
</table>
<p>The <code class="directive">ErrorLog</code> directive sets the name of
the file to which the server will log any errors it encounters. If
- the <var>file-path</var> is not absolute then it is assumed to be
+ 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>
syslog facility <code>local7</code>, but you can override this by
using the <code>syslog:<var>facility</var></code> syntax where
<var>facility</var> can be one of the names usually documented in
- syslog(1).</p>
+ syslog(1). The facility is effectively global, and if it is changed
+ in individual virtual hosts, the final facility specified affects the
+ entire server.</p>
<div class="example"><h3>Example</h3><p><code>
ErrorLog syslog:user
anyone other than the user that starts the server.</p>
<div class="warning"><h3>Note</h3>
<p>When entering a file path on non-Unix platforms, care should be taken
- to make sure that only forward slashed are used even though the platform
- may allow the use of back slashes. In general it is a good idea to always
+ to make sure that only forward slashes are used even though the platform
+ may allow the use of back slashes. In general it is a good idea to always
use forward slashes throughout the configuration files.</p>
</div>
<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>
</code></p></div>
<p>Specifying <code>connection</code> or <code>request</code> as first
- paramter allows to specify additional formats, causing additional
+ 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
logged once per connection/request. If a connection or request is processed
<td>Remote IP-address and port</td></tr>
<tr><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 class="odd"><td><code>%...{<em>name</em>}e</code></td>
+ <td>Request environment variable <em>name</em></td></tr>
<tr><td><code>%...E</code></td>
<td>APR/OS error status code and string</td></tr>
<tr class="odd"><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><td><code>%...{<em>name</em>}i</code></td>
+ <td>Request header <em>name</em></td></tr>
<tr class="odd"><td><code>%...k</code></td>
<td>Number of keep-alive requests on this connection</td></tr>
<tr><td><code>%...l</code></td>
<td>Name of the module logging the message</td></tr>
<tr class="odd"><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><td><code>%...{<em>name</em>}n</code></td>
+ <td>Request note <em>name</em></td></tr>
<tr class="odd"><td><code>%...P</code></td>
<td>Process ID of current process</td></tr>
<tr><td><code>%...T</code></td>
<td>Thread ID of current thread</td></tr>
-<tr class="odd"><td><code>%...t</code></td>
+<tr class="odd"><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><td><code>%...t</code></td>
<td>The current time</td></tr>
-<tr><td><code>%...{u}t</code></td>
+<tr class="odd"><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><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 class="odd"><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><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>
-<tr><td><code>\ </code> (backslash space)</td>
+<tr class="odd"><td><code>\ </code> (backslash space)</td>
<td>Non-field delimiting space</td></tr>
-<tr class="odd"><td><code>% </code> (percent space)</td>
+<tr><td><code>% </code> (percent space)</td>
<td>Field delimiter (no output)</td></tr>
</table>
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]
+ <div class="example"><h3>Example (default format)</h3><p><code>
+ ErrorLogFormat "[%{u}t] [%-m:%l] [pid %P:tid %T] %7F: %E: [client\ %a]
%M% ,\ referer\ %{Referer}i"
</code></p></div>
+ <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 ommitted
+ entirely because they are not defined.</p>
+
<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"
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="ExtendedStatus" id="ExtendedStatus">ExtendedStatus</a> <a name="extendedstatus" id="extendedstatus">Directive</a></h2>
<table class="directive">
-<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Keep track of extended status information for each
+<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Keep track of extended status information for each
request</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>ExtendedStatus On|Off</code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>ExtendedStatus Off[*]</code></td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>core</td></tr>
</table>
<p>This option tracks additional data per worker about the
- currently executing request, and a utilization summary; you
- can see these variables during runtime by configuring
+ currently executing request, and a utilization summary; you
+ can see these variables during runtime by configuring
<code class="module"><a href="../mod/mod_status.html">mod_status</a></code>. Note that other modules may
rely on this scoreboard.</p>
during a graceful restart.</p>
<div class="note">
- <p>Note that loading <code class="module"><a href="../mod/mod_status.html">mod_status</a></code> will change
+ <p>Note that loading <code class="module"><a href="../mod/mod_status.html">mod_status</a></code> will change
the default behavior to ExtendedStatus On, while other
third party modules may do the same. Such modules rely on
collecting detailed information about the state of all workers.
changed via <code class="directive">FileETag</code>.
</div>
<div class="note"><h3>Server Side Includes</h3>
- An ETag is not generated for responses parsed by <code class="module"><a href="../mod/mod_include.html">mod_include</a></code>,
- since the response entity can change without a change of the INode, MTime, or Size
+ An ETag is not generated for responses parsed by <code class="module"><a href="../mod/mod_include.html">mod_include</a></code>,
+ since the response entity can change without a change of the INode, MTime, or Size
of the static file with embedded SSI directives.
</div>
<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>
+ <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>
<p>The <code class="directive"><FilesMatch></code> directive
limits the scope of the enclosed directives by filename, just as the
<code class="directive"><a href="#files"><Files></a></code> directive
- does. However, it accepts a <a class="glossarylink" href="../glossary.html#regex" title="see glossary">regular
+ 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>
</code></p></div>
<p>This directive primarily overrides the content types generated for
- static files served out of the filesystem. For resources other than
- static files, where the generator of the response typically specifies
+ static files served out of the filesystem. For resources other than
+ static files, where the generator of the response typically specifies
a Content-Type, this directive has no effect.</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="GprofDir" id="GprofDir">GprofDir</a> <a name="gprofdir" id="gprofdir">Directive</a></h2>
+<table class="directive">
+<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Directory to write gmon.out profiling data to. </td></tr>
+<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>GprofDir <var>/tmp/gprof/</var>|<var>/tmp/gprof/</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>
+</table>
+ <p>When the server has been compiled with gprof profiling suppport,
+ <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
+ for each process id.</p>
+
+ <p>This directive currently only works with the <code class="module"><a href="../mod/prefork.html">prefork</a></code>
+ MPM.</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="HostnameLookups" id="HostnameLookups">HostnameLookups</a> <a name="hostnamelookups" id="hostnamelookups">Directive</a></h2>
For example:</p>
<div class="example"><p><code>
- <If "$req{Host} = ''">
+ <If "-z req('Host')">
</code></p></div>
- <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>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>
+ <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>
<div class="example"><p><code>
- <If %{REQUEST_METHOD} IN GET,HEAD,OPTIONS>
+ <If "%{QUERY_STRING} =~ /(delete|commit)=.*?elem/">
</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>
</IfDefine><br />
<IfDefine !MemCache><br />
<span class="indent">
- LoadModule disk_cache_module modules/mod_disk_cache.so<br />
+ LoadModule cache_disk_module modules/mod_cache_disk.so<br />
</span>
</IfDefine>
</span>
<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 file path specified may be an absolute path, or may be relative
+ <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>
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>
-
+
<div class="example"><p><code>
Include conf/vhosts/*/vhost.conf<br />
Include conf/vhosts/*/*.conf
<div class="example"><p><code>
Include strict conf/vhosts/*/*.conf
</code></p></div>
-
+
<p>In this example, the server load successfully if either conf/vhosts/*
matches no directories, or if *.conf matches no files:</p>
<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>Specifying a value in milliseconds is available in
+<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Specifying a value in milliseconds is available in
Apache httpd 2.3.2 and later</td></tr>
</table>
<p>The number of seconds Apache httpd will wait for a subsequent
may cause performance problems in heavily loaded servers. The
higher the timeout, the more server processes will be kept
occupied waiting on connections with idle clients.</p>
-
+
<p>In a name-based virtual host context, the value of the first
- defined virtual host (the default host) in a set of <code class="directive"><a href="#namevirtualhost">NameVirtualHost</a></code> will be used.
- The other values will be ignored.</p>
+ defined virtual host best matching the local IP and port will be used.</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<LimitExcept GET>
<span class="indent">
Require valid-user
- </span>
+ </span>
</LimitExcept><br />
<Limit POST>
<span class="indent">
Require group editors
- </span>
+ </span>
</Limit>
</code></p></div>
</table>
<p>This directive specifies the number of <var>bytes</var> from 0
(meaning unlimited) to 2147483647 (2GB) that are allowed in a
- request body.</p>
+ request body. See the note below for the limited applicability
+ to proxy requests.</p>
<p>The <code class="directive">LimitRequestBody</code> directive allows
the user to set a limit on the allowed size of an HTTP request
LimitRequestBody 102400
</code></p></div>
+ <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>
+ </div>
+
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
LimitRequestFields 50
</code></p></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 for the
+ local IP and port combination</p>.
+ </div>
+
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></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 reduce or increase 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
- field will vary greatly among different client implementations,
+ 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
+ field will vary greatly among different client implementations,
often depending upon the extent to which a user has configured
their browser to support detailed content negotiation. SPNEGO
authentication headers can be up to 12392 bytes.</p>
<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
+ matching the current IP address and port combination.</p>
+ </div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<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>This directive sets the number of <var>bytes</var> that will be
+ <p>This directive sets the number of <var>bytes</var> that will be
allowed on the HTTP request-line.</p>
<p>The <code class="directive">LimitRequestLine</code> directive allows
<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
+ matching the current IP address and port combination.</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="LimitXMLRequestBody" id="LimitXMLRequestBody">LimitXMLRequestBody</a> <a name="limitxmlrequestbody" id="limitxmlrequestbody">Directive</a></h2>
locations. Since several different URLs may map to the same
filesystem location, such access controls may by circumvented.</p>
+ <p>The enclosed directives will be applied to the request if the path component
+ of the URL meets <em>any</em> of the following criteria:
+ </p>
+ <ul>
+ <li>The specified location matches exactly the path component of the URL.
+ </li>
+ <li>The specified location, which ends in a forward slash, is a prefix
+ of the path component of the URL (treated as a context root).
+ </li>
+ <li>The specified location, with the addition of a trailing slash, is a
+ prefix of the path component of the URL (also treated as a context root).
+ </li>
+ </ul>
+ <p>
+ In the example below, where no trailing slash is used, requests to
+ /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>
+ <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>
+
<div class="note"><h3>When to use <code class="directive"><Location></code></h3>
<p>Use <code class="directive"><Location></code> to apply
directives to content that lives outside the filesystem. For
content that lives in the filesystem, use <code class="directive"><a href="#directory"><Directory></a></code> and <code class="directive"><a href="#files"><Files></a></code>. An exception is
- <code><Location /></code>, which is an easy way to
+ <code><Location /></code>, which is an easy way to
apply a configuration to the entire server.</p>
</div>
characters. Neither wildcard character matches a / in the URL-path.</p>
<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>
+ can also be used, with the addition of the <code>~</code>
character. For example:</p>
<div class="example"><p><code>
<Location /status><br />
<span class="indent">
SetHandler server-status<br />
- Order Deny,Allow<br />
- Deny from all<br />
- Allow from .example.com<br />
+ Require host example.com<br />
</span>
</Location>
</code></p></div>
MaxKeepAliveRequests 500
</code></p></div>
+</div>
+<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
+<div class="directive-section"><h2><a name="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>
<div class="directive-section"><h2><a name="Mutex" id="Mutex">Mutex</a> <a name="mutex" id="mutex">Directive</a></h2>
<li><code>default | yes</code>
<p>This selects the default locking implementation, as determined by
<a class="glossarylink" href="../glossary.html#apr" title="see glossary">APR</a>. The default locking implementation can
- be displayed by running <code class="program"><a href="../programs/httpd.html">httpd</a></code> with the
+ be displayed by running <code class="program"><a href="../programs/httpd.html">httpd</a></code> with the
<code>-V</code> option.</p></li>
<li><code>none | no</code>
<p>This is a mutex variant based on a SystemV IPC semaphore.</p>
<div class="warning"><h3>Warning</h3>
- <p>It is possible to "leak" SysV semaphores if processes crash
+ <p>It is possible to "leak" SysV semaphores if processes crash
before the semaphore is removed.</p>
</div>
</li>
<li><code>fcntl:/path/to/mutex</code>
- <p>This is a mutex variant where a physical (lock-)file and the
+ <p>This is a mutex variant where a physical (lock-)file and the
<code>fcntl()</code> function are used as the mutex.</p>
<div class="warning"><h3>Warning</h3>
order.</p></li>
</ul>
- <p>Most mechanisms are only available on selected platforms, where the
+ <p>Most mechanisms are only available on selected platforms, where the
underlying platform and <a class="glossarylink" href="../glossary.html#apr" title="see glossary">APR</a> support it. Mechanisms
which aren't available on all platforms are <em>posixsem</em>,
- <em>sysvsem</em>, <em>sem</em>, <em>pthread</em>, <em>fcntl</em>,
+ <em>sysvsem</em>, <em>sem</em>, <em>pthread</em>, <em>fcntl</em>,
<em>flock</em>, and <em>file</em>.</p>
<p>With the file-based mechanisms <em>fcntl</em> and <em>flock</em>,
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>OmitPID</code> keyword is specified, the process id of the httpd
parent process will be appended to to make the file name unique, avoiding
conflicts when multiple httpd instances share a lock file directory. For
example, if the mutex name is <code>mpm-accept</code> and the lock file
directory is <code>/var/httpd/locks</code>, the lock file name for the
- httpd instance with parent process id 12345 would be
+ httpd instance with parent process id 12345 would be
<code>/var/httpd/locks/mpm-accept.12345</code>.</p>
<div class="warning"><h3>Security</h3>
<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>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>core</td></tr>
</table>
-<p>A single <code class="directive">NameVirtualHost</code> directive
-identifies a set of identical virtual hosts on which the server will
-further select from on the basis of the <em>hostname</em>
-requested by the client. The <code class="directive">NameVirtualHost</code>
-directive is a required directive if you want to configure
-<a href="../vhosts/">name-based virtual hosts</a>.</p>
-
-<p>This directive, and the corresponding <code class="directive">VirtualHost</code>,
-<em>must</em> be qualified with a port number if the server supports both HTTP
-and HTTPS connections.</p>
-
-<p>Although <var>addr</var> can be a hostname, it is recommended
-that you always use an IP address or a wildcard. A wildcard
-NameVirtualHost matches only virtualhosts that also have a literal wildcard
-as their argument.</p>
-
-<p>In cases where a firewall or other proxy receives the requests and
-forwards them on a different IP address to the server, you must specify the
-IP address of the physical interface on the machine which will be
-servicing the requests. </p>
-
-<p> In the example below, requests received on interface 192.0.2.1 and port 80
-will only select among the first two virtual hosts. Requests received on
-port 80 on any other interface will only select among the third and fourth
-virtual hosts. In the common case where the interface isn't important
-to the mapping, only the "*:80" NameVirtualHost and VirtualHost directives
-are necessary.</p>
-
- <div class="example"><p><code>
- NameVirtualHost 192.0.2.1:80<br />
- NameVirtualHost *:80<br /><br />
-
- <VirtualHost 192.0.2.1:80><br />
- ServerName namebased-a.example.com<br />
- </VirtualHost><br />
- <br />
- <VirtualHost 192.0.2.1:80><br />
- Servername namebased-b.example.com<br />
- </VirtualHost><br />
- <br />
- <VirtualHost *:80><br />
- ServerName namebased-c.example.com <br />
- </VirtualHost><br />
- <br />
- <VirtualHost *:80><br />
- ServerName namebased-d.example.com <br />
- </VirtualHost><br />
- <br />
-
- </code></p></div>
+<p>Prior to 2.3.11, <code class="directive">NameVirtualHost</code> was required
+to instruct the server that a particular IP address and port combination
+was usable as a name-based virtual host. In 2.3.11 and later,
+any time an IP address and port combination is used in multiple virtual
+hosts, name-based virtual hosting is automatically enabled for that address.</p>
- <p>If no matching virtual host is found, then the first listed
- virtual host that matches the IP address and port will be used.</p>
-
-
- <p>IPv6 addresses must be enclosed in square brackets, as shown
- in the following example:</p>
-
- <div class="example"><p><code>
- NameVirtualHost [2001:db8::a00:20ff:fea7:ccea]:8080
- </code></p></div>
-
- <div class="note"><h3>Argument to <code class="directive"><VirtualHost></code>
- directive</h3>
- <p>Note that the argument to the <code class="directive"><VirtualHost></code> directive must
- exactly match the argument to the <code class="directive">NameVirtualHost</code> directive.</p>
-
- <div class="example"><p><code>
- NameVirtualHost 192.0.2.2:80<br />
- <VirtualHost 192.0.2.2:80><br />
- # ...<br />
- </VirtualHost><br />
- </code></p></div>
- </div>
+<p>This directive currently has no effect.</p>
<h3>See also</h3>
<ul>
directory</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>Options
[+|-]<var>option</var> [[+|-]<var>option</var>] ...</code></td></tr>
-<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>Options All</code></td></tr>
+<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>Options FollowSymlinks</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>Options</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 was changed from All to FollowSymlinks in 2.3.11</td></tr>
</table>
<p>The <code class="directive">Options</code> directive controls which
server features are available in a particular directory.</p>
<dl>
<dt><code>All</code></dt>
- <dd>All options except for <code>MultiViews</code>. This is the default
- setting.</dd>
+ <dd>All options except for <code>MultiViews</code>.</dd>
<dt><code>ExecCGI</code></dt>
<dt><code>FollowSymLinks</code></dt>
<dd>
-
- The server will follow symbolic links in this directory.
+ The server will follow symbolic links in this directory. This is
+ the default setting.
<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>
<dd>
<a href="../content-negotiation.html">Content negotiated</a>
"MultiViews" are allowed using
- <code class="module"><a href="../mod/mod_negotiation.html">mod_negotiation</a></code>.</dd>
+ <code class="module"><a href="../mod/mod_negotiation.html">mod_negotiation</a></code>.
+ <div class="note"><h3>Note</h3> <p>This option gets ignored if set
+ anywhere other than <code class="directive"><a href="#directory"><Directory></a></code>, as <code class="module"><a href="../mod/mod_negotiation.html">mod_negotiation</a></code>
+ needs real resources to compare against and evaluate from.</p></div>
+ </dd>
<dt><code>SymLinksIfOwnerMatch</code></dt>
<code>-</code> are removed from the options currently in
force. </p>
- <div class="warning"><h3>Warning</h3>
+ <div class="note"><h3>Note</h3>
<p>Mixing <code class="directive">Options</code> with a <code>+</code> or
- <code>-</code> with those without is not valid syntax, and is likely
- to cause unexpected results.</p>
+ <code>-</code> with those without is not valid syntax, and will be
+ rejected during server startup by the syntax check with an abort.</p>
</div>
<p>For example, without any <code>+</code> and <code>-</code> symbols:</p>
</div>
<p>The default in the absence of any other settings is
- <code>All</code>.</p>
+ <code>FollowSymlinks</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="Protocol" id="Protocol">Protocol</a> <a name="protocol" id="protocol">Directive</a></h2>
+<table class="directive">
+<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Protocol for a listening socket</td></tr>
+<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>Protocol <var>protocol</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>
+<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache 2.1.5 and later.
+On Windows from Apache 2.3.3 and later.</td></tr>
+</table>
+ <p>This directive specifies the protocol used for a specific listening socket.
+ The protocol is used to determine which module should handle a request, and
+ to apply protocol specific optimizations with the <code class="directive">AcceptFilter</code>
+ directive.</p>
+
+ <p>You only need to set the protocol if you are running on non-standard ports, otherwise <code>http</code> is assumed for port 80 and <code>https</code> for port 443.</p>
+
+ <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>
+ <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="../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="RLimitCPU" id="RLimitCPU">RLimitCPU</a> <a name="rlimitcpu" id="rlimitcpu">Directive</a></h2>
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache httpd 2.2.7 and later.</td></tr>
</table>
<p>mod_status with <code>ExtendedStatus On</code>
- displays the actual request being handled.
+ displays the actual request being handled.
For historical purposes, only 63 characters of the request
are actually stored for display purposes. This directive
controls whether the 1st 63 characters are stored (the previous
<div class="example"><p><code>
<VirtualHost *:80><br />
- ServerName server.domain.com<br />
- ServerAlias server server2.domain.com server2<br />
+ ServerName server.example.com<br />
+ ServerAlias server server2.example.com server2<br />
ServerAlias *.example.com<br />
UseCanonicalName Off<br />
# ...<br />
<p>Additionally, <code class="directive">ServerName</code> is used (possibly
in conjunction with <code class="directive">ServerAlias</code>) to uniquely
identify a virtual host, when using <a href="../vhosts/name-based.html">name-based virtual hosts</a>.</p>
-
+
<p>For example, if the name of the
machine hosting the web server is <code>simple.example.com</code>,
but the machine also has the DNS alias <code>www.example.com</code>
directive should be used:</p>
<div class="example"><p><code>
- ServerName www.example.com:80
+ ServerName www.example.com
</code></p></div>
<p>The <code class="directive">ServerName</code> directive
<code>https://</code> scheme and the port number to which the
clients connect in the <code class="directive">ServerName</code> directive
to make sure that the server generates the correct
- self-referential URLs.
+ self-referential URLs.
</p>
<p>See the description of the
documentation</a></li>
<li><code class="directive"><a href="#usecanonicalname">UseCanonicalName</a></code></li>
<li><code class="directive"><a href="#usecanonicalphysicalport">UseCanonicalPhysicalPort</a></code></li>
-<li><code class="directive"><a href="#namevirtualhost">NameVirtualHost</a></code></li>
<li><code class="directive"><a href="#serveralias">ServerAlias</a></code></li>
</ul>
</div>
<p>The <code class="directive">ServerRoot</code> directive sets the
directory in which the server lives. Typically it will contain the
subdirectories <code>conf/</code> and <code>logs/</code>. Relative
- 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
+ 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>
+ <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>
<ul>
<p>After version 2.0.44, this directive also controls the
information presented by the <code class="directive"><a href="#serversignature">ServerSignature</a></code> directive.</p>
-
+
<div class="note">Setting <code class="directive">ServerTokens</code> to less than
<code>minimal</code> is not recommended because it makes it more
difficult to debug interoperational problems. Also note that
<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,
+
+ <div class="note"><h3>Note</h3>
+ <p>Because <code class="directive">SetHandler</code> overrides default handlers,
normal behaviour such as handling of URLs ending in a slash (/) as
- directories or index files is suppressed.</p>
+ directories or index files is suppressed.</p></div>
<h3>See also</h3>
<ul>
<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 behaviour 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>
allowed) error to the client.</p>
<p>Finally, for testing and diagnostic purposes only, request
- bodies may be allowed using the non-compliant <code>TraceEnable
+ bodies may be allowed using the non-compliant <code>TraceEnable
extended</code> directive. The core (as an origin server) will
restrict the request body to 64k (plus 8k for chunk headers if
<code>Transfer-Encoding: chunked</code> is used). The core will
type a shortname, and a URL which is a directory, such as
<code>http://www/splat</code>, <em>without the trailing
slash</em> then Apache httpd will redirect them to
- <code>http://www.domain.com/splat/</code>. If you have
+ <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.domain.com</code> -- see <a href="http://httpd.apache.org/docs/misc/FAQ.html#prompted-twice">the
+ 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
<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>
</div>
used. When the server receives a request for a document on a
particular virtual host, it uses the configuration directives
enclosed in the <code class="directive"><VirtualHost></code>
- section. <var>Addr</var> can be:</p>
+ section. <var>Addr</var> can be any of the following, optionally followed by
+ a colon and a port number (or *):</p>
<ul>
<li>The IP address of the virtual host;</li>
<li>A fully qualified domain name for the IP address of the
virtual host (not recommended);</li>
- <li>The character <code>*</code>, which is used only in combination with
- <code>NameVirtualHost *</code> to match all IP addresses; or</li>
+ <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>
- <li>The string <code>_default_</code>, which is used only
- with IP virtual hosting to catch unmatched IP addresses.</li>
</ul>
<div class="example"><h3>Example</h3><p><code>
- <VirtualHost 10.1.2.3><br />
+ <VirtualHost 10.1.2.3:80><br />
<span class="indent">
ServerAdmin webmaster@host.example.com<br />
DocumentRoot /www/docs/host.example.com<br />
IPv6 example is shown below:</p>
<div class="example"><p><code>
- <VirtualHost [2001:db8::a00:20ff:fea7:ccea]><br />
+ <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 />
using <code class="directive"><a href="../mod/mpm_common.html#listen">Listen</a></code>.</p>
</div>
- <p>When using IP-based virtual hosting, the special name
- <code>_default_</code> can be specified in
- which case this virtual host will match any IP address that is
- not explicitly listed in another virtual host. In the absence
- of any <code>_default_</code> virtual host the "main" server config,
- consisting of all those definitions outside any VirtualHost
- section, is used when no IP-match occurs.</p>
-
- <p>You can specify a <code>:port</code> to change the port that is
- matched. If unspecified then it defaults to the same port as the
- most recent <code class="directive"><a href="../mod/mpm_common.html#listen">Listen</a></code>
- statement of the main server. You may also specify <code>:*</code>
- to match all ports on that address. (This is recommended when used
- with <code>_default_</code>.)</p>
-
<p>A <code class="directive"><a href="#servername">ServerName</a></code> should be
specified inside each <code class="directive"><VirtualHost></code> block. If it is absent, the
<code class="directive"><a href="#servername">ServerName</a></code> from the "main"
server configuration will be inherited.</p>
- <p>If no matching virtual host is found, then the first listed
- virtual host that matches the IP address will be used. As a
- consequence, the first listed virtual host is the default virtual
- host.</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
+ "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
+ 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
+ combination.</p>
<div class="warning"><h3>Security</h3>
<p>See the <a href="../misc/security_tips.html">security tips</a>
<div class="bottomlang">
<p><span>Available Languages: </span><a href="../de/mod/core.html" hreflang="de" rel="alternate" title="Deutsch"> de </a> |
<a href="../en/mod/core.html" title="English"> en </a> |
+<a href="../es/mod/core.html" hreflang="es" rel="alternate" title="Español"> es </a> |
<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="apache">Copyright 2011 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
</body></html>
\ No newline at end of file