]> granicus.if.org Git - apache/blob - docs/manual/mod/core.xml
At last, TraceEnable docs
[apache] / docs / manual / mod / core.xml
1 <?xml version="1.0"?>
2 <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
3 <?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?>
4 <!-- $LastChangedRevision$ -->
5
6 <!--
7  Copyright 2002-2005 The Apache Software Foundation or its licensors, as
8  applicable.
9
10  Licensed under the Apache License, Version 2.0 (the "License");
11  you may not use this file except in compliance with the License.
12  You may obtain a copy of the License at
13
14      http://www.apache.org/licenses/LICENSE-2.0
15
16  Unless required by applicable law or agreed to in writing, software
17  distributed under the License is distributed on an "AS IS" BASIS,
18  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19  See the License for the specific language governing permissions and
20  limitations under the License.
21 -->
22
23 <modulesynopsis metafile="core.xml.meta">
24
25 <name>core</name>
26 <description>Core Apache HTTP Server features that are always
27 available</description>
28 <status>Core</status>
29
30 <directivesynopsis>
31 <name>AcceptFilter</name>
32 <description>Configures optimizations for a Protocol's Listener Sockets</description>
33 <syntax>AcceptFilter <var>protocol</var> <var>accept_filter</var></syntax>
34 <contextlist><context>server config</context></contextlist>
35 <compatibility>Available in Apache 2.1.5 and later</compatibility>
36
37 <usage>
38     <p>This directive enables operating system specific optimizations for a 
39        listening socket by the Protocol type. The basic premise is for the 
40        kernel to not send a socket to the server process until either data 
41        is received or an entire HTTP Request is buffered. Only
42        <a href="http://www.freebsd.org/cgi/man.cgi?query=accept_filter&amp;sektion=9">
43        FreeBSD's Accept Filters</a> and Linux's more primitive 
44        <code>TCP_DEFER_ACCEPT</code> are currently supported.</p>
45
46     <p>The default values on FreeBSD are:</p>
47     <example>
48         AcceptFilter http httpready <br/>
49         AcceptFilter https dataready
50     </example>
51     
52     <p>The <code>httpready</code> accept filter buffers entire HTTP requests at
53        the kernel level.  Once an entire request is recieved, the kernel then 
54        sends it to the server. See the 
55        <a href="http://www.freebsd.org/cgi/man.cgi?query=accf_http&amp;sektion=9">
56        accf_http(9)</a> man page for more details.  Since HTTPS requests are 
57        encrypted only the <a href="http://www.freebsd.org/cgi/man.cgi?query=accf_data&amp;sektion=9">
58        accf_data(9)</a> filter is used.</p>
59
60     <p>The default values on Linux are:</p>
61     <example>
62         AcceptFilter http data <br/>
63         AcceptFilter https data
64     </example>
65
66     <p>Linux's <code>TCP_DEFER_ACCEPT</code> does not support buffering http
67        requests.  Any value besides <code>none</code> will enable 
68        <code>TCP_DEFER_ACCEPT</code> on that listener. For more details
69        see the Linux 
70        <a href="http://homepages.cwi.nl/~aeb/linux/man2html/man7/tcp.7.html">
71        tcp(7)</a> man page.</p>
72
73     <p>Using <code>none</code> for an argument will disable any accept filters 
74        for that protocol.  This is useful for protocols that require a server
75        send data first, such as <code>nntp</code>:</p>
76     <example>AcceptFilter nttp none</example>
77
78 </usage>
79 </directivesynopsis>
80
81 <directivesynopsis>
82 <name>AcceptPathInfo</name>
83 <description>Resources accept trailing pathname information</description>
84 <syntax>AcceptPathInfo On|Off|Default</syntax>
85 <default>AcceptPathInfo Default</default>
86 <contextlist><context>server config</context>
87 <context>virtual host</context><context>directory</context>
88 <context>.htaccess</context></contextlist>
89 <override>FileInfo</override>
90 <compatibility>Available in Apache 2.0.30 and later</compatibility>
91
92 <usage>
93
94     <p>This directive controls whether requests that contain trailing
95     pathname information that follows an actual filename (or
96     non-existent file in an existing directory) will be accepted or
97     rejected.  The trailing pathname information can be made
98     available to scripts in the <code>PATH_INFO</code> environment
99     variable.</p>
100
101     <p>For example, assume the location <code>/test/</code> points to
102     a directory that contains only the single file
103     <code>here.html</code>.  Then requests for
104     <code>/test/here.html/more</code> and
105     <code>/test/nothere.html/more</code> both collect
106     <code>/more</code> as <code>PATH_INFO</code>.</p>
107
108     <p>The three possible arguments for the
109     <directive>AcceptPathInfo</directive> directive are:</p>
110     <dl>
111     <dt><code>Off</code></dt><dd>A request will only be accepted if it
112     maps to a literal path that exists.  Therefore a request with
113     trailing pathname information after the true filename such as
114     <code>/test/here.html/more</code> in the above example will return
115     a 404 NOT FOUND error.</dd>
116
117     <dt><code>On</code></dt><dd>A request will be accepted if a
118     leading path component maps to a file that exists.  The above
119     example <code>/test/here.html/more</code> will be accepted if
120     <code>/test/here.html</code> maps to a valid file.</dd>
121
122     <dt><code>Default</code></dt><dd>The treatment of requests with
123     trailing pathname information is determined by the <a
124     href="../handler.html">handler</a> responsible for the request.
125     The core handler for normal files defaults to rejecting
126     <code>PATH_INFO</code> requests. Handlers that serve scripts, such as <a
127     href="mod_cgi.html">cgi-script</a> and <a
128     href="mod_isapi.html">isapi-isa</a>, generally accept
129     <code>PATH_INFO</code> by default.</dd>
130     </dl>
131
132     <p>The primary purpose of the <code>AcceptPathInfo</code>
133     directive is to allow you to override the handler's choice of
134     accepting or rejecting <code>PATH_INFO</code>. This override is required,
135     for example, when you use a <a href="../filter.html">filter</a>, such
136     as <a href="mod_include.html">INCLUDES</a>, to generate content
137     based on <code>PATH_INFO</code>.  The core handler would usually reject
138     the request, so you can use the following configuration to enable
139     such a script:</p>
140
141     <example>
142       &lt;Files "mypaths.shtml"&gt;<br />
143       <indent>
144         Options +Includes<br />
145         SetOutputFilter INCLUDES<br />
146         AcceptPathInfo On<br />
147       </indent>
148       &lt;/Files&gt;
149     </example>
150
151 </usage>
152 </directivesynopsis>
153
154 <directivesynopsis>
155 <name>AccessFileName</name>
156 <description>Name of the distributed configuration file</description>
157 <syntax>AccessFileName <var>filename</var> [<var>filename</var>] ...</syntax>
158 <default>AccessFileName .htaccess</default>
159 <contextlist><context>server config</context><context>virtual host</context>
160 </contextlist>
161
162 <usage>
163     <p>While processing a request the server looks for
164     the first existing configuration file from this list of names in
165     every directory of the path to the document, if distributed
166     configuration files are <a href="#allowoverride">enabled for that
167     directory</a>. For example:</p>
168
169     <example>
170       AccessFileName .acl
171     </example>
172
173     <p>before returning the document
174     <code>/usr/local/web/index.html</code>, the server will read
175     <code>/.acl</code>, <code>/usr/.acl</code>,
176     <code>/usr/local/.acl</code> and <code>/usr/local/web/.acl</code>
177     for directives, unless they have been disabled with</p>
178
179     <example>
180       &lt;Directory /&gt;<br />
181       <indent>
182         AllowOverride None<br />
183       </indent>
184       &lt;/Directory&gt;
185     </example>
186 </usage>
187 <seealso><directive module="core">AllowOverride</directive></seealso>
188 <seealso><a href="../configuring.html">Configuration Files</a></seealso>
189 <seealso><a href="../howto/htaccess.html">.htaccess Files</a></seealso>
190 </directivesynopsis>
191
192 <directivesynopsis>
193 <name>AddDefaultCharset</name>
194 <description>Default charset parameter to be added when a response
195 content-type is <code>text/plain</code> or <code>text/html</code></description>
196 <syntax>AddDefaultCharset On|Off|<var>charset</var></syntax>
197 <default>AddDefaultCharset Off</default>
198 <contextlist><context>server config</context>
199 <context>virtual host</context><context>directory</context>
200 <context>.htaccess</context></contextlist>
201 <override>FileInfo</override>
202
203 <usage>
204     <p>This directive specifies a default value for the media type
205     charset parameter (the name of a character encoding) to be added
206     to a response if and only if the response's content-type is either
207     <code>text/plain</code> or <code>text/html</code>.  This should override
208     any charset specified in the body of the response via a <code>META</code>
209     element, though the exact behavior is often dependent on the user's client
210     configuration. A setting of <code>AddDefaultCharset Off</code>
211     disables this functionality. <code>AddDefaultCharset On</code> enables
212     a default charset of <code>iso-8859-1</code>. Any other value is assumed
213     to be the <var>charset</var> to be used, which should be one of the
214     <a href="http://www.iana.org/assignments/character-sets">IANA registered
215     charset values</a> for use in MIME media types.
216     For example:</p>
217
218     <example>
219       AddDefaultCharset utf-8
220     </example>
221
222     <p><directive>AddDefaultCharset</directive> should only be used when all
223     of the text resources to which it applies are known to be in that
224     character encoding and it is too inconvenient to label their charset
225     individually. One such example is to add the charset parameter
226     to resources containing generated content, such as legacy CGI
227     scripts, that might be vulnerable to cross-site scripting attacks
228     due to user-provided data being included in the output.  Note, however,
229     that a better solution is to just fix (or delete) those scripts, since
230     setting a default charset does not protect users that have enabled
231     the "auto-detect character encoding" feature on their browser.</p>
232 </usage>
233 <seealso><directive module="mod_mime">AddCharset</directive></seealso>
234 </directivesynopsis>
235
236 <directivesynopsis>
237 <name>AddOutputFilterByType</name>
238 <description>assigns an output filter to a particular MIME-type</description>
239 <syntax>AddOutputFilterByType <var>filter</var>[;<var>filter</var>...]
240 <var>MIME-type</var> [<var>MIME-type</var>] ...</syntax>
241 <contextlist><context>server config</context>
242 <context>virtual host</context><context>directory</context>
243 <context>.htaccess</context></contextlist>
244 <override>FileInfo</override>
245 <compatibility>Available in Apache 2.0.33 and later</compatibility>
246
247 <usage>
248     <p>This directive activates a particular output <a
249     href="../filter.html">filter</a> for a request depending on the
250     response MIME-type.</p>
251
252     <p>The following example uses the <code>DEFLATE</code> filter, which
253     is provided by <module>mod_deflate</module>. It will compress all
254     output (either static or dynamic) which is labeled as
255     <code>text/html</code> or <code>text/plain</code> before it is sent
256     to the client.</p>
257
258     <example>
259       AddOutputFilterByType DEFLATE text/html text/plain
260     </example>
261
262     <p>If you want the content to be processed by more than one filter, their
263     names have to be separated by semicolons. It's also possible to use one
264     <directive>AddOutputFilterByType</directive> directive for each of
265     these filters.</p>
266
267     <p>The configuration below causes all script output labeled as
268     <code>text/html</code> to be processed at first by the
269     <code>INCLUDES</code> filter and then by the <code>DEFLATE</code>
270     filter.</p>
271
272     <example>
273     &lt;Location /cgi-bin/&gt;<br />
274     <indent>
275       Options Includes<br />
276       AddOutputFilterByType INCLUDES;DEFLATE text/html<br />
277     </indent>
278     &lt;/Location&gt;
279     </example>
280
281     <note type="warning"><title>Note</title>
282       <p>Enabling filters with <directive>AddOutputFilterByType</directive>
283       may fail partially or completely in some cases. For example, no
284       filters are applied if the MIME-type could not be determined  and falls
285       back to the <directive module="core">DefaultType</directive> setting,
286       even if the <directive module="core">DefaultType</directive> is the
287       same.</p>
288
289       <p>However, if you want to make sure, that the filters will be
290       applied, assign the content type to a resource explicitly, for
291       example with <directive module="mod_mime">AddType</directive> or
292       <directive module="core">ForceType</directive>. Setting the
293       content type within a (non-nph) CGI script is also safe.</p>
294
295       <p>The by-type output filters are never applied on proxy requests.</p>
296     </note>
297 </usage>
298
299 <seealso><directive module="mod_mime">AddOutputFilter</directive></seealso>
300 <seealso><directive module="core">SetOutputFilter</directive></seealso>
301 <seealso><a href="../filter.html">filters</a></seealso>
302 </directivesynopsis>
303
304 <directivesynopsis>
305 <name>AllowEncodedSlashes</name>
306 <description>Determines whether encoded path separators in URLs are allowed to
307 be passed through</description>
308 <syntax>AllowEncodedSlashes On|Off</syntax>
309 <default>AllowEncodedSlashes Off</default>
310 <contextlist><context>server config</context><context>virtual host</context>
311 </contextlist>
312 <compatibility>Available in Apache 2.0.46 and later</compatibility>
313
314 <usage>
315     <p>The <directive>AllowEncodedSlashes</directive> directive allows URLs
316     which contain encoded path separators (<code>%2F</code> for <code>/</code>
317     and additionally <code>%5C</code> for <code>\</code> on according systems)
318     to be used. Normally such URLs are refused with a 404 (Not found) error.</p>
319
320     <p>Turning <directive>AllowEncodedSlashes</directive> <code>On</code> is
321     mostly useful when used in conjunction with <code>PATH_INFO</code>.</p>
322
323     <note><title>Note</title>
324       <p>Allowing encoded slashes does <em>not</em> imply <em>decoding</em>.
325       Occurrences of <code>%2F</code> or <code>%5C</code> (<em>only</em> on
326       according systems) will be left as such in the otherwise decoded URL
327       string.</p>
328     </note>
329 </usage>
330 <seealso><directive module="core">AcceptPathInfo</directive></seealso>
331 </directivesynopsis>
332
333 <directivesynopsis>
334 <name>AllowOverride</name>
335 <description>Types of directives that are allowed in
336 <code>.htaccess</code> files</description>
337 <syntax>AllowOverride All|None|<var>directive-type</var>
338 [<var>directive-type</var>] ...</syntax>
339 <default>AllowOverride All</default>
340 <contextlist><context>directory</context></contextlist>
341
342 <usage>
343     <p>When the server finds an <code>.htaccess</code> file (as
344     specified by <directive module="core">AccessFileName</directive>)
345     it needs to know which directives declared in that file can override
346     earlier configuration directives.</p>
347
348     <note><title>Only available in &lt;Directory&gt; sections</title>
349     <directive>AllowOverride</directive> is valid only in
350     <directive type="section" module="core">Directory</directive>
351     sections specified without regular expressions, not in <directive
352     type="section" module="core">Location</directive>, <directive
353     module="core" type="section">DirectoryMatch</directive> or
354     <directive type="section" module="core">Files</directive> sections.
355     </note>
356
357     <p>When this directive is set to <code>None</code>, then
358     <a href="#accessfilename">.htaccess</a> files are completely ignored.
359     In this case, the server will not even attempt to read
360     <code>.htaccess</code> files in the filesystem.</p>
361
362     <p>When this directive is set to <code>All</code>, then any
363     directive which has the .htaccess <a
364     href="directive-dict.html#Context">Context</a> is allowed in
365     <code>.htaccess</code> files.</p>
366
367     <p>The <var>directive-type</var> can be one of the following
368     groupings of directives.</p>
369
370     <dl>
371       <dt>AuthConfig</dt>
372
373       <dd>
374
375       Allow use of the authorization directives (<directive
376       module="mod_authn_dbm">AuthDBMGroupFile</directive>,
377       <directive module="mod_authn_dbm">AuthDBMUserFile</directive>,
378       <directive module="mod_authz_groupfile">AuthGroupFile</directive>,
379       <directive module="core">AuthName</directive>,
380       <directive module="core">AuthType</directive>, <directive
381       module="mod_authn_file">AuthUserFile</directive>, <directive
382       module="core">Require</directive>, <em>etc.</em>).</dd>
383
384       <dt>FileInfo</dt>
385
386       <dd>
387       Allow use of the directives controlling document types (<directive
388       module="core">DefaultType</directive>, <directive
389       module="core">ErrorDocument</directive>, <directive
390       module="core">ForceType</directive>, <directive
391       module="mod_negotiation">LanguagePriority</directive>,
392       <directive module="core">SetHandler</directive>, <directive
393       module="core">SetInputFilter</directive>, <directive
394       module="core">SetOutputFilter</directive>, and
395       <module>mod_mime</module> Add* and Remove*
396       directives, <em>etc.</em>).</dd>
397
398       <dt>Indexes</dt>
399
400       <dd>
401       Allow use of the directives controlling directory indexing
402       (<directive
403       module="mod_autoindex">AddDescription</directive>,
404       <directive module="mod_autoindex">AddIcon</directive>, <directive
405       module="mod_autoindex">AddIconByEncoding</directive>,
406       <directive module="mod_autoindex">AddIconByType</directive>,
407       <directive module="mod_autoindex">DefaultIcon</directive>, <directive
408       module="mod_dir">DirectoryIndex</directive>, <directive
409       module="mod_autoindex">FancyIndexing</directive>, <directive
410       module="mod_autoindex">HeaderName</directive>, <directive
411       module="mod_autoindex">IndexIgnore</directive>, <directive
412       module="mod_autoindex">IndexOptions</directive>, <directive
413       module="mod_autoindex">ReadmeName</directive>,
414       <em>etc.</em>).</dd>
415
416       <dt>Limit</dt>
417
418       <dd>
419       Allow use of the directives controlling host access (<directive
420       module="mod_authz_host">Allow</directive>, <directive
421       module="mod_authz_host">Deny</directive> and <directive
422       module="mod_authz_host">Order</directive>).</dd>
423
424       <dt>Options[=<var>Option</var>,...]</dt>
425
426       <dd>
427       Allow use of the directives controlling specific directory
428       features (<directive module="core">Options</directive> and
429       <directive module="mod_include">XBitHack</directive>).
430       An equal sign may be given followed by a comma (but no spaces)
431       separated lists of options that may be set using the <directive
432       module="core">Options</directive> command.</dd>
433     </dl>
434
435     <p>Example:</p>
436
437     <example>
438       AllowOverride AuthConfig Indexes
439     </example>
440
441     <p>In the example above all directives that are neither in the group
442     <code>AuthConfig</code> nor <code>Indexes</code> cause an internal
443     server error.</p>
444 </usage>
445
446 <seealso><directive module="core">AccessFileName</directive></seealso>
447 <seealso><a href="../configuring.html">Configuration Files</a></seealso>
448 <seealso><a href="../howto/htaccess.html">.htaccess Files</a></seealso>
449 </directivesynopsis>
450
451 <directivesynopsis>
452 <name>AuthName</name>
453 <description>Authorization realm for use in HTTP
454 authentication</description>
455 <syntax>AuthName <var>auth-domain</var></syntax>
456 <contextlist><context>directory</context><context>.htaccess</context>
457 </contextlist>
458 <override>AuthConfig</override>
459
460 <usage>
461     <p>This directive sets the name of the authorization realm for a
462     directory. This realm is given to the client so that the user
463     knows which username and password to send.
464     <directive>AuthName</directive> takes a single argument; if the
465     realm name contains spaces, it must be enclosed in quotation
466     marks.  It must be accompanied by <directive
467     module="core">AuthType</directive> and <directive
468     module="core">Require</directive> directives, and directives such
469     as <directive module="mod_authn_file">AuthUserFile</directive> and
470     <directive module="mod_authz_groupfile">AuthGroupFile</directive> to
471     work.</p>
472
473    <p>For example:</p>
474
475    <example>
476      AuthName "Top Secret"
477    </example>
478
479     <p>The string provided for the <code>AuthName</code> is what will
480     appear in the password dialog provided by most browsers.</p>
481 </usage>
482 <seealso><a
483     href="../howto/auth.html">Authentication, Authorization, and
484     Access Control</a></seealso>
485 </directivesynopsis>
486
487 <directivesynopsis>
488 <name>AuthType</name>
489 <description>Type of user authentication</description>
490 <syntax>AuthType Basic|Digest</syntax>
491 <contextlist><context>directory</context><context>.htaccess</context>
492 </contextlist>
493 <override>AuthConfig</override>
494
495 <usage>
496     <p>This directive selects the type of user authentication for a
497     directory. Only <code>Basic</code> and <code>Digest</code> are
498     currently implemented.
499
500      It must be accompanied by <directive
501      module="core">AuthName</directive> and <directive
502      module="core">Require</directive> directives, and directives such
503      as <directive module="mod_authn_file">AuthUserFile</directive> and
504      <directive module="mod_authz_groupfile">AuthGroupFile</directive> to
505      work.</p>
506 </usage>
507 <seealso><a href="../howto/auth.html">Authentication, Authorization,
508 and Access Control</a></seealso>
509 </directivesynopsis>
510
511 <directivesynopsis>
512 <name>CGIMapExtension</name>
513 <description>Technique for locating the interpreter for CGI
514 scripts</description>
515 <syntax>CGIMapExtension <var>cgi-path</var> <var>.extension</var></syntax>
516 <contextlist><context>directory</context><context>.htaccess</context>
517 </contextlist>
518 <override>FileInfo</override>
519 <compatibility>NetWare only</compatibility>
520
521 <usage>
522     <p>This directive is used to control how Apache finds the
523     interpreter used to run CGI scripts. For example, setting
524     <code>CGIMapExtension sys:\foo.nlm .foo</code> will
525     cause all CGI script files with a <code>.foo</code> extension to
526     be passed to the FOO interpreter.</p>
527 </usage>
528 </directivesynopsis>
529
530 <directivesynopsis>
531 <name>ContentDigest</name>
532 <description>Enables the generation of <code>Content-MD5</code> HTTP Response
533 headers</description>
534 <syntax>ContentDigest On|Off</syntax>
535 <default>ContentDigest Off</default>
536 <contextlist><context>server config</context><context>virtual host</context>
537 <context>directory</context><context>.htaccess</context>
538 </contextlist>
539 <override>Options</override>
540 <status>Experimental</status>
541
542 <usage>
543     <p>This directive enables the generation of
544     <code>Content-MD5</code> headers as defined in RFC1864
545     respectively RFC2068.</p>
546
547     <p>MD5 is an algorithm for computing a "message digest"
548     (sometimes called "fingerprint") of arbitrary-length data, with
549     a high degree of confidence that any alterations in the data
550     will be reflected in alterations in the message digest.</p>
551
552     <p>The <code>Content-MD5</code> header provides an end-to-end
553     message integrity check (MIC) of the entity-body. A proxy or
554     client may check this header for detecting accidental
555     modification of the entity-body in transit. Example header:</p>
556
557     <example>
558       Content-MD5: AuLb7Dp1rqtRtxz2m9kRpA==
559     </example>
560
561     <p>Note that this can cause performance problems on your server
562     since the message digest is computed on every request (the
563     values are not cached).</p>
564
565     <p><code>Content-MD5</code> is only sent for documents served
566     by the <module>core</module>, and not by any module. For example,
567     SSI documents, output from CGI scripts, and byte range responses
568     do not have this header.</p>
569 </usage>
570 </directivesynopsis>
571
572 <directivesynopsis>
573 <name>DefaultType</name>
574 <description>MIME content-type that will be sent if the
575 server cannot determine a type in any other way</description>
576 <syntax>DefaultType <var>MIME-type</var></syntax>
577 <default>DefaultType text/plain</default>
578 <contextlist><context>server config</context><context>virtual host</context>
579 <context>directory</context><context>.htaccess</context>
580 </contextlist>
581 <override>FileInfo</override>
582
583 <usage>
584     <p>There will be times when the server is asked to provide a
585     document whose type cannot be determined by its MIME types
586     mappings.</p>
587
588     <p>The server must inform the client of the content-type of the
589     document, so in the event of an unknown type it uses the
590     <code>DefaultType</code>. For example:</p>
591
592     <example>
593       DefaultType image/gif
594     </example>
595
596     <p>would be appropriate for a directory which contained many GIF
597     images with filenames missing the <code>.gif</code> extension.</p>
598
599     <p>Note that unlike <directive
600     module="core">ForceType</directive>, this directive only
601     provides the default mime-type. All other mime-type definitions,
602     including filename extensions, that might identify the media type
603     will override this default.</p>
604 </usage>
605 </directivesynopsis>
606
607 <directivesynopsis type="section">
608 <name>Directory</name>
609 <description>Enclose a group of directives that apply only to the
610 named file-system directory and sub-directories</description>
611 <syntax>&lt;Directory <var>directory-path</var>&gt;
612 ... &lt;/Directory&gt;</syntax>
613 <contextlist><context>server config</context><context>virtual host</context>
614 </contextlist>
615
616 <usage>
617     <p><directive type="section">Directory</directive> and
618     <code>&lt;/Directory&gt;</code> are used to enclose a group of
619     directives that will apply only to the named directory and
620     sub-directories of that directory. Any directive that is allowed
621     in a directory context may be used. <var>Directory-path</var> is
622     either the full path to a directory, or a wild-card string using
623     Unix shell-style matching. In a wild-card string, <code>?</code> matches
624     any single character, and <code>*</code> matches any sequences of
625     characters. You may also use <code>[]</code> character ranges. None
626     of the wildcards match a `/' character, so <code>&lt;Directory
627     /*/public_html&gt;</code> will not match
628     <code>/home/user/public_html</code>, but <code>&lt;Directory
629     /home/*/public_html&gt;</code> will match. Example:</p>
630
631     <example>
632       &lt;Directory /usr/local/httpd/htdocs&gt;<br />
633       <indent>
634         Options Indexes FollowSymLinks<br />
635       </indent>
636       &lt;/Directory&gt;
637     </example>
638
639     <note>
640       <p>Be careful with the <var>directory-path</var> arguments:
641       They have to literally match the filesystem path which Apache uses
642       to access the files. Directives applied to a particular
643       <code>&lt;Directory&gt;</code> will not apply to files accessed from
644       that same directory via a different path, such as via different symbolic
645       links.</p>
646     </note>
647
648     <p>Extended regular
649     expressions can also be used, with the addition of the
650     <code>~</code> character. For example:</p>
651
652     <example>
653       &lt;Directory ~ "^/www/.*/[0-9]{3}"&gt;
654     </example>
655
656     <p>would match directories in <code>/www/</code> that consisted of
657     three numbers.</p>
658
659     <p>If multiple (non-regular expression) <directive
660     type="section">Directory</directive> sections
661     match the directory (or one of its parents) containing a document,
662     then the directives are applied in the order of shortest match
663     first, interspersed with the directives from the <a
664     href="#accessfilename">.htaccess</a> files. For example,
665     with</p>
666
667     <example>
668       &lt;Directory /&gt;<br />
669       <indent>
670         AllowOverride None<br />
671       </indent>
672       &lt;/Directory&gt;<br />
673       <br />
674       &lt;Directory /home/&gt;<br />
675       <indent>
676         AllowOverride FileInfo<br />
677       </indent>
678       &lt;/Directory&gt;
679     </example>
680
681     <p>for access to the document <code>/home/web/dir/doc.html</code>
682     the steps are:</p>
683
684     <ul>
685       <li>Apply directive <code>AllowOverride None</code>
686       (disabling <code>.htaccess</code> files).</li>
687
688       <li>Apply directive <code>AllowOverride FileInfo</code> (for
689       directory <code>/home</code>).</li>
690
691       <li>Apply any <code>FileInfo</code> directives in
692       <code>/home/.htaccess</code>, <code>/home/web/.htaccess</code> and
693       <code>/home/web/dir/.htaccess</code> in that order.</li>
694     </ul>
695
696     <p>Regular expressions are not considered until after all of the
697     normal sections have been applied. Then all of the regular
698     expressions are tested in the order they appeared in the
699     configuration file. For example, with</p>
700
701     <example>
702       &lt;Directory ~ abc$&gt;<br />
703       <indent>
704         # ... directives here ...<br />
705       </indent>
706       &lt;/Directory&gt;
707     </example>
708
709     <p>the regular expression section won't be considered until after
710     all normal <directive type="section">Directory</directive>s and
711     <code>.htaccess</code> files have been applied. Then the regular
712     expression will match on <code>/home/abc/public_html/abc</code> and
713     the corresponding <directive type="section">Directory</directive> will
714     be applied.</p>
715
716    <p><strong>Note that the default Apache access for
717     <code>&lt;Directory /&gt;</code> is <code>Allow from All</code>.
718     This means that Apache will serve any file mapped from an URL. It is
719     recommended that you change this with a block such
720     as</strong></p>
721
722     <example>
723       &lt;Directory /&gt;<br />
724       <indent>
725         Order Deny,Allow<br />
726         Deny from All<br />
727       </indent>
728       &lt;/Directory&gt;
729     </example>
730
731     <p><strong>and then override this for directories you
732     <em>want</em> accessible. See the <a
733     href="../misc/security_tips.html">Security Tips</a> page for more
734     details.</strong></p>
735
736     <p>The directory sections occur in the <code>httpd.conf</code> file.
737     <directive type="section">Directory</directive> directives
738     cannot nest, and cannot appear in a <directive module="core"
739     type="section">Limit</directive> or <directive module="core"
740     type="section">LimitExcept</directive> section.</p>
741 </usage>
742 <seealso><a href="../sections.html">How &lt;Directory&gt;,
743     &lt;Location&gt; and &lt;Files&gt; sections work</a> for an
744     explanation of how these different sections are combined when a
745     request is received</seealso>
746 </directivesynopsis>
747
748 <directivesynopsis type="section">
749 <name>DirectoryMatch</name>
750 <description>Enclose directives that apply to
751 file-system directories matching a regular expression and their
752 subdirectories</description>
753 <syntax>&lt;DirectoryMatch <var>regex</var>&gt;
754 ... &lt;/DirectoryMatch&gt;</syntax>
755 <contextlist><context>server config</context><context>virtual host</context>
756 </contextlist>
757
758 <usage>
759     <p><directive type="section">DirectoryMatch</directive> and
760     <code>&lt;/DirectoryMatch&gt;</code> are used to enclose a group
761     of directives which will apply only to the named directory and
762     sub-directories of that directory, the same as <directive
763     module="core" type="section">Directory</directive>. However, it
764     takes as an argument a regular expression. For example:</p>
765
766     <example>
767       &lt;DirectoryMatch "^/www/(.+/)?[0-9]{3}"&gt;
768     </example>
769
770     <p>would match directories in <code>/www/</code> that consisted of three
771     numbers.</p>
772 </usage>
773 <seealso><directive type="section" module="core">Directory</directive> for
774 a description of how regular expressions are mixed in with normal
775 <directive type="section">Directory</directive>s</seealso>
776 <seealso><a
777 href="../sections.html">How &lt;Directory&gt;, &lt;Location&gt; and
778 &lt;Files&gt; sections work</a> for an explanation of how these different
779 sections are combined when a request is received</seealso>
780 </directivesynopsis>
781
782 <directivesynopsis>
783 <name>DocumentRoot</name>
784 <description>Directory that forms the main document tree visible
785 from the web</description>
786 <syntax>DocumentRoot <var>directory-path</var></syntax>
787 <default>DocumentRoot /usr/local/apache/htdocs</default>
788 <contextlist><context>server config</context><context>virtual host</context>
789 </contextlist>
790
791 <usage>
792     <p>This directive sets the directory from which <program>httpd</program>
793     will serve files. Unless matched by a directive like <directive
794     module="mod_alias">Alias</directive>, the server appends the
795     path from the requested URL to the document root to make the
796     path to the document. Example:</p>
797
798     <example>
799       DocumentRoot /usr/web
800     </example>
801
802     <p>then an access to
803     <code>http://www.my.host.com/index.html</code> refers to
804     <code>/usr/web/index.html</code>. If the <var>directory-path</var> is 
805     not absolute then it is assumed to be relative to the <directive 
806     module="core">ServerRoot</directive>.</p>
807
808     <p>The <directive>DocumentRoot</directive> should be specified without
809     a trailing slash.</p>
810 </usage>
811 <seealso><a href="../urlmapping.html">Mapping URLs to Filesystem
812 Location</a></seealso>
813 </directivesynopsis>
814
815 <directivesynopsis>
816 <name>EnableMMAP</name>
817 <description>Use memory-mapping to read files during delivery</description>
818 <syntax>EnableMMAP On|Off</syntax>
819 <default>EnableMMAP On</default>
820 <contextlist><context>server config</context><context>virtual host</context>
821 <context>directory</context><context>.htaccess</context>
822 </contextlist>
823 <override>FileInfo</override>
824
825 <usage>
826     <p>This directive controls whether the <program>httpd</program> may use
827     memory-mapping if it needs to read the contents of a file during
828     delivery.  By default, when the handling of a request requires
829     access to the data within a file -- for example, when delivering a
830     server-parsed file using <module>mod_include</module> -- Apache
831     memory-maps the file if the OS supports it.</p>
832
833     <p>This memory-mapping sometimes yields a performance improvement.
834     But in some environments, it is better to disable the memory-mapping
835     to prevent operational problems:</p>
836
837     <ul>
838     <li>On some multiprocessor systems, memory-mapping can reduce the
839     performance of the <program>httpd</program>.</li>
840     <li>With an NFS-mounted <directive module="core">DocumentRoot</directive>,
841     the <program>httpd</program> may crash due to a segmentation fault if a file
842     is deleted or truncated while the <program>httpd</program> has it
843     memory-mapped.</li>
844     </ul>
845
846     <p>For server configurations that are vulnerable to these problems,
847     you should disable memory-mapping of delivered files by specifying:</p>
848
849     <example>
850       EnableMMAP Off
851     </example>
852
853     <p>For NFS mounted files, this feature may be disabled explicitly for
854     the offending files by specifying:</p>
855
856     <example>
857       &lt;Directory "/path-to-nfs-files"&gt;
858       <indent>
859         EnableMMAP Off
860       </indent>
861       &lt;/Directory&gt;
862     </example>
863 </usage>
864 </directivesynopsis>
865
866 <directivesynopsis>
867 <name>EnableSendfile</name>
868 <description>Use the kernel sendfile support to deliver files to the client</description>
869 <syntax>EnableSendfile On|Off</syntax>
870 <default>EnableSendfile On</default>
871 <contextlist><context>server config</context><context>virtual host</context>
872 <context>directory</context><context>.htaccess</context>
873 </contextlist>
874 <override>FileInfo</override>
875 <compatibility>Available in version 2.0.44 and later</compatibility>
876
877 <usage>
878     <p>This directive controls whether <program>httpd</program> may use the
879     sendfile support from the kernel to transmit file contents to the client.
880     By default, when the handling of a request requires no access
881     to the data within a file -- for example, when delivering a
882     static file -- Apache uses sendfile to deliver the file contents
883     without ever reading the file if the OS supports it.</p>
884
885     <p>This sendfile mechanism avoids separate read and send operations,
886     and buffer allocations. But on some platforms or within some
887     filesystems, it is better to disable this feature to avoid
888     operational problems:</p>
889
890     <ul>
891     <li>Some platforms may have broken sendfile support that the build
892     system did not detect, especially if the binaries were built on
893     another box and moved to such a machine with broken sendfile
894     support.</li>
895     <li>On Linux the use of sendfile triggers TCP-checksum
896     offloading bugs on certain networking cards when using IPv6.</li>
897     <li>With a network-mounted <directive
898     module="core">DocumentRoot</directive> (e.g., NFS or SMB),
899     the kernel may be unable to serve the network file through
900     its own cache.</li>
901     </ul>
902
903     <p>For server configurations that are vulnerable to these problems,
904     you should disable this feature by specifying:</p>
905
906     <example>
907       EnableSendfile Off
908     </example>
909
910     <p>For NFS or SMB mounted files, this feature may be disabled explicitly
911     for the offending files by specifying:</p>
912
913     <example>
914       &lt;Directory "/path-to-nfs-files"&gt;
915       <indent>
916         EnableSendfile Off
917       </indent>
918       &lt;/Directory&gt;
919     </example>
920 </usage>
921 </directivesynopsis>
922
923 <directivesynopsis>
924 <name>ErrorDocument</name>
925 <description>What the server will return to the client
926 in case of an error</description>
927 <syntax>ErrorDocument <var>error-code</var> <var>document</var></syntax>
928 <contextlist><context>server config</context><context>virtual host</context>
929 <context>directory</context><context>.htaccess</context>
930 </contextlist>
931 <override>FileInfo</override>
932 <compatibility>Quoting syntax for text messages is different in Apache
933 2.0</compatibility>
934
935 <usage>
936     <p>In the event of a problem or error, Apache can be configured
937     to do one of four things,</p>
938
939     <ol>
940       <li>output a simple hardcoded error message</li>
941
942       <li>output a customized message</li>
943
944       <li>redirect to a local <var>URL-path</var> to handle the
945       problem/error</li>
946
947       <li>redirect to an external <var>URL</var> to handle the
948       problem/error</li>
949     </ol>
950
951     <p>The first option is the default, while options 2-4 are
952     configured using the <directive>ErrorDocument</directive>
953     directive, which is followed by the HTTP response code and a URL
954     or a message. Apache will sometimes offer additional information
955     regarding the problem/error.</p>
956
957     <p>URLs can begin with a slash (/) for local web-paths (relative
958     to the <directive module="core">DocumentRoot</directive>), or be a
959     full URL which the client can resolve. Alternatively, a message
960     can be provided to be displayed by the browser. Examples:</p>
961
962     <example>
963       ErrorDocument 500 http://foo.example.com/cgi-bin/tester<br />
964       ErrorDocument 404 /cgi-bin/bad_urls.pl<br />
965       ErrorDocument 401 /subscription_info.html<br />
966       ErrorDocument 403 "Sorry can't allow you access today"
967     </example>
968
969     <p>Additionally, the special value <code>default</code> can be used
970     to specify Apache's simple hardcoded message.  While not required
971     under normal circumstances, <code>default</code> will restore
972     Apache's simple hardcoded message for configurations that would
973     otherwise inherit an existing <directive>ErrorDocument</directive>.</p>
974
975     <example>
976       ErrorDocument 404 /cgi-bin/bad_urls.pl<br /><br />
977       &lt;Directory /web/docs&gt;<br />
978       <indent>
979         ErrorDocument 404 default<br />
980       </indent>
981       &lt;/Directory&gt;
982     </example>
983
984     <p>Note that when you specify an <directive>ErrorDocument</directive>
985     that points to a remote URL (ie. anything with a method such as
986     <code>http</code> in front of it), Apache will send a redirect to the
987     client to tell it where to find the document, even if the
988     document ends up being on the same server. This has several
989     implications, the most important being that the client will not
990     receive the original error status code, but instead will
991     receive a redirect status code. This in turn can confuse web
992     robots and other clients which try to determine if a URL is
993     valid using the status code. In addition, if you use a remote
994     URL in an <code>ErrorDocument 401</code>, the client will not
995     know to prompt the user for a password since it will not
996     receive the 401 status code. Therefore, <strong>if you use an
997     <code>ErrorDocument 401</code> directive then it must refer to a local
998     document.</strong></p>
999
1000     <p>Microsoft Internet Explorer (MSIE) will by default ignore
1001     server-generated error messages when they are "too small" and substitute
1002     its own "friendly" error messages. The size threshold varies depending on
1003     the type of error, but in general, if you make your error document
1004     greater than 512 bytes, then MSIE will show the server-generated
1005     error rather than masking it.  More information is available in
1006     Microsoft Knowledge Base article <a
1007     href="http://support.microsoft.com/default.aspx?scid=kb;en-us;Q294807"
1008     >Q294807</a>.</p>
1009
1010     <p>Although most error messages can be overriden, there are certain
1011     circumstances where the internal messages are used regardless of the
1012     setting of <directive module="core">ErrorDocument</directive>.  In
1013     particular, if a malformed request is detected, normal request processing
1014     will be immediately halted and the internal error message returned.
1015     This is necessary to guard against security problems caused by
1016     bad requests.</p>
1017
1018     <p>Prior to version 2.0, messages were indicated by prefixing
1019     them with a single unmatched double quote character.</p>
1020 </usage>
1021
1022 <seealso><a href="../custom-error.html">documentation of
1023     customizable responses</a></seealso>
1024 </directivesynopsis>
1025
1026 <directivesynopsis>
1027 <name>ErrorLog</name>
1028 <description>Location where the server will log errors</description>
1029 <syntax> ErrorLog <var>file-path</var>|syslog[:<var>facility</var>]</syntax>
1030 <default>ErrorLog logs/error_log (Unix) ErrorLog logs/error.log (Windows and OS/2)</default>
1031 <contextlist><context>server config</context><context>virtual host</context>
1032 </contextlist>
1033
1034 <usage>
1035     <p>The <directive>ErrorLog</directive> directive sets the name of
1036     the file to which the server will log any errors it encounters. If
1037     the <var>file-path</var> is not absolute then it is assumed to be 
1038     relative to the <directive module="core">ServerRoot</directive>.</p>
1039
1040     <example><title>Example</title>
1041     ErrorLog /var/log/httpd/error_log
1042     </example>
1043
1044     <p>If the <var>file-path</var>
1045     begins with a pipe (|) then it is assumed to be a command to spawn
1046     to handle the error log.</p>
1047
1048     <example><title>Example</title>
1049     ErrorLog "|/usr/local/bin/httpd_errors"
1050     </example>
1051
1052     <p>Using <code>syslog</code> instead of a filename enables logging
1053     via syslogd(8) if the system supports it. The default is to use
1054     syslog facility <code>local7</code>, but you can override this by
1055     using the <code>syslog:<var>facility</var></code> syntax where
1056     <var>facility</var> can be one of the names usually documented in
1057     syslog(1).</p>
1058
1059     <example><title>Example</title>
1060     ErrorLog syslog:user
1061     </example>
1062
1063     <p>SECURITY: See the <a
1064     href="../misc/security_tips.html#serverroot">security tips</a>
1065     document for details on why your security could be compromised
1066     if the directory where log files are stored is writable by
1067     anyone other than the user that starts the server.</p>
1068     <note type="warning"><title>Note</title>
1069       <p>When entering a file path on non-Unix platforms, care should be taken
1070       to make sure that only forward slashed are used even though the platform
1071       may allow the use of back slashes. In general it is a good idea to always 
1072       use forward slashes throughout the configuration files.</p>
1073     </note>
1074 </usage>
1075 <seealso><directive module="core">LogLevel</directive></seealso>
1076 <seealso><a href="../logs.html">Apache Log Files</a></seealso>
1077 </directivesynopsis>
1078
1079 <directivesynopsis>
1080 <name>FileETag</name>
1081 <description>File attributes used to create the ETag
1082 HTTP response header</description>
1083 <syntax>FileETag <var>component</var> ...</syntax>
1084 <default>FileETag INode MTime Size</default>
1085 <contextlist><context>server config</context><context>virtual host</context>
1086 <context>directory</context><context>.htaccess</context>
1087 </contextlist>
1088 <override>FileInfo</override>
1089
1090 <usage>
1091     <p>
1092     The <directive>FileETag</directive> directive configures the file
1093     attributes that are used to create the <code>ETag</code> (entity
1094     tag) response header field when the document is based on a file.
1095     (The <code>ETag</code> value is used in cache management to save
1096     network bandwidth.) In Apache 1.3.22 and earlier, the
1097     <code>ETag</code> value was <em>always</em> formed
1098     from the file's inode, size, and last-modified time (mtime). The
1099     <directive>FileETag</directive> directive allows you to choose
1100     which of these -- if any -- should be used. The recognized keywords are:
1101     </p>
1102
1103     <dl>
1104      <dt><strong>INode</strong></dt>
1105      <dd>The file's i-node number will be included in the calculation</dd>
1106      <dt><strong>MTime</strong></dt>
1107      <dd>The date and time the file was last modified will be included</dd>
1108      <dt><strong>Size</strong></dt>
1109      <dd>The number of bytes in the file will be included</dd>
1110      <dt><strong>All</strong></dt>
1111      <dd>All available fields will be used. This is equivalent to:
1112          <example>FileETag INode MTime Size</example></dd>
1113      <dt><strong>None</strong></dt>
1114      <dd>If a document is file-based, no <code>ETag</code> field will be
1115        included in the response</dd>
1116     </dl>
1117
1118     <p>The <code>INode</code>, <code>MTime</code>, and <code>Size</code>
1119     keywords may be prefixed with either <code>+</code> or <code>-</code>,
1120     which allow changes to be made to the default setting inherited
1121     from a broader scope. Any keyword appearing without such a prefix
1122     immediately and completely cancels the inherited setting.</p>
1123
1124     <p>If a directory's configuration includes
1125     <code>FileETag&nbsp;INode&nbsp;MTime&nbsp;Size</code>, and a
1126     subdirectory's includes <code>FileETag&nbsp;-INode</code>,
1127     the setting for that subdirectory (which will be inherited by
1128     any sub-subdirectories that don't override it) will be equivalent to
1129     <code>FileETag&nbsp;MTime&nbsp;Size</code>.</p>
1130 </usage>
1131 </directivesynopsis>
1132
1133 <directivesynopsis type="section">
1134 <name>Files</name>
1135 <description>Contains directives that apply to matched
1136 filenames</description>
1137 <syntax>&lt;Files <var>filename</var>&gt; ... &lt;/Files&gt;</syntax>
1138 <contextlist><context>server config</context><context>virtual host</context>
1139 <context>directory</context><context>.htaccess</context>
1140 </contextlist>
1141 <override>All</override>
1142
1143 <usage>
1144     <p>The <directive type="section">Files</directive> directive
1145     limits the scope of the enclosed directives by filename. It is comparable
1146     to the <directive module="core" type="section">Directory</directive>
1147     and <directive module="core" type="section">Location</directive>
1148     directives. It should be matched with a <code>&lt;/Files&gt;</code>
1149     directive. The directives given within this section will be applied to
1150     any object with a basename (last component of filename) matching the
1151     specified filename. <directive type="section">Files</directive>
1152     sections are processed in the order they appear in the
1153     configuration file, after the <directive module="core"
1154     type="section">Directory</directive> sections and
1155     <code>.htaccess</code> files are read, but before <directive
1156     type="section" module="core">Location</directive> sections. Note
1157     that <directive type="section">Files</directive> can be nested
1158     inside <directive type="section"
1159     module="core">Directory</directive> sections to restrict the
1160     portion of the filesystem they apply to.</p>
1161
1162     <p>The <var>filename</var> argument should include a filename, or
1163     a wild-card string, where <code>?</code> matches any single character,
1164     and <code>*</code> matches any sequences of characters. Extended regular
1165     expressions can also be used, with the addition of the
1166     <code>~</code> character. For example:</p>
1167
1168     <example>
1169       &lt;Files ~ "\.(gif|jpe?g|png)$"&gt;
1170     </example>
1171
1172     <p>would match most common Internet graphics formats. <directive
1173     module="core" type="section">FilesMatch</directive> is preferred,
1174     however.</p>
1175
1176     <p>Note that unlike <directive type="section"
1177     module="core">Directory</directive> and <directive type="section"
1178     module="core">Location</directive> sections, <directive
1179     type="section">Files</directive> sections can be used inside
1180     <code>.htaccess</code> files. This allows users to control access to
1181     their own files, at a file-by-file level.</p>
1182
1183 </usage>
1184 <seealso><a href="../sections.html">How &lt;Directory&gt;, &lt;Location&gt;
1185     and &lt;Files&gt; sections work</a> for an explanation of how these
1186     different sections are combined when a request is received</seealso>
1187 </directivesynopsis>
1188
1189 <directivesynopsis type="section">
1190 <name>FilesMatch</name>
1191 <description>Contains directives that apply to regular-expression matched
1192 filenames</description>
1193 <syntax>&lt;FilesMatch <var>regex</var>&gt; ... &lt;/FilesMatch&gt;</syntax>
1194 <contextlist><context>server config</context><context>virtual host</context>
1195 <context>directory</context><context>.htaccess</context>
1196 </contextlist>
1197 <override>All</override>
1198
1199 <usage>
1200     <p>The <directive type="section">FilesMatch</directive> directive
1201     limits the scope of the enclosed directives by filename, just as the
1202     <directive module="core" type="section">Files</directive> directive
1203     does. However, it accepts a regular expression. For example:</p>
1204
1205     <example>
1206       &lt;FilesMatch "\.(gif|jpe?g|png)$"&gt;
1207     </example>
1208
1209     <p>would match most common Internet graphics formats.</p>
1210 </usage>
1211
1212 <seealso><a href="../sections.html">How &lt;Directory&gt;, &lt;Location&gt;
1213     and &lt;Files&gt; sections work</a> for an explanation of how these
1214     different sections are combined when a request is received</seealso>
1215 </directivesynopsis>
1216
1217 <directivesynopsis>
1218 <name>ForceType</name>
1219 <description>Forces all matching files to be served with the specified
1220 MIME content-type</description>
1221 <syntax>ForceType <var>MIME-type</var>|None</syntax>
1222 <contextlist><context>directory</context><context>.htaccess</context>
1223 </contextlist>
1224 <override>FileInfo</override>
1225 <compatibility>Moved to the core in Apache 2.0</compatibility>
1226
1227 <usage>
1228     <p>When placed into an <code>.htaccess</code> file or a
1229     <directive type="section" module="core">Directory</directive>, or
1230     <directive type="section" module="core">Location</directive> or
1231     <directive type="section" module="core">Files</directive>
1232     section, this directive forces all matching files to be served
1233     with the content type identification given by
1234     <var>MIME-type</var>. For example, if you had a directory full of
1235     GIF files, but did not want to label them all with <code>.gif</code>,
1236     you might want to use:</p>
1237
1238     <example>
1239       ForceType image/gif
1240     </example>
1241
1242     <p>Note that unlike <directive module="core">DefaultType</directive>,
1243     this directive overrides all mime-type associations, including
1244     filename extensions, that might identify the media type.</p>
1245
1246     <p>You can override any <directive>ForceType</directive> setting
1247     by using the value of <code>None</code>:</p>
1248
1249     <example>
1250       # force all files to be image/gif:<br />
1251       &lt;Location /images&gt;<br />
1252         <indent>
1253           ForceType image/gif<br />
1254         </indent>
1255       &lt;/Location&gt;<br />
1256       <br />
1257       # but normal mime-type associations here:<br />
1258       &lt;Location /images/mixed&gt;<br />
1259       <indent>
1260         ForceType None<br />
1261       </indent>
1262       &lt;/Location&gt;
1263     </example>
1264 </usage>
1265 </directivesynopsis>
1266
1267 <directivesynopsis>
1268 <name>HostnameLookups</name>
1269 <description>Enables DNS lookups on client IP addresses</description>
1270 <syntax>HostnameLookups On|Off|Double</syntax>
1271 <default>HostnameLookups Off</default>
1272 <contextlist><context>server config</context><context>virtual host</context>
1273 <context>directory</context></contextlist>
1274
1275 <usage>
1276     <p>This directive enables DNS lookups so that host names can be
1277     logged (and passed to CGIs/SSIs in <code>REMOTE_HOST</code>).
1278     The value <code>Double</code> refers to doing double-reverse
1279     DNS lookup. That is, after a reverse lookup is performed, a forward
1280     lookup is then performed on that result. At least one of the IP
1281     addresses in the forward lookup must match the original
1282     address. (In "tcpwrappers" terminology this is called
1283     <code>PARANOID</code>.)</p>
1284
1285     <p>Regardless of the setting, when <module>mod_authz_host</module> is
1286     used for controlling access by hostname, a double reverse lookup
1287     will be performed.  This is necessary for security. Note that the
1288     result of this double-reverse isn't generally available unless you
1289     set <code>HostnameLookups Double</code>. For example, if only
1290     <code>HostnameLookups On</code> and a request is made to an object
1291     that is protected by hostname restrictions, regardless of whether
1292     the double-reverse fails or not, CGIs will still be passed the
1293     single-reverse result in <code>REMOTE_HOST</code>.</p>
1294
1295     <p>The default is <code>Off</code> in order to save the network
1296     traffic for those sites that don't truly need the reverse
1297     lookups done. It is also better for the end users because they
1298     don't have to suffer the extra latency that a lookup entails.
1299     Heavily loaded sites should leave this directive
1300     <code>Off</code>, since DNS lookups can take considerable
1301     amounts of time. The utility <program>logresolve</program>, compiled by
1302     default to the <code>bin</code> subdirectory of your installation
1303     directory, can be used to look up host names from logged IP addresses
1304     offline.</p>
1305 </usage>
1306 </directivesynopsis>
1307
1308 <directivesynopsis type="section">
1309 <name>IfDefine</name>
1310 <description>Encloses directives that will be processed only
1311 if a test is true at startup</description>
1312 <syntax>&lt;IfDefine [!]<var>parameter-name</var>&gt; ...
1313     &lt;/IfDefine&gt;</syntax>
1314 <contextlist><context>server config</context><context>virtual host</context>
1315 <context>directory</context><context>.htaccess</context>
1316 </contextlist>
1317 <override>All</override>
1318
1319 <usage>
1320     <p>The <code>&lt;IfDefine <var>test</var>&gt;...&lt;/IfDefine&gt;
1321     </code> section is used to mark directives that are conditional. The
1322     directives within an <directive type="section">IfDefine</directive>
1323     section are only processed if the <var>test</var> is true. If <var>
1324     test</var> is false, everything between the start and end markers is
1325     ignored.</p>
1326
1327     <p>The <var>test</var> in the <directive type="section"
1328     >IfDefine</directive> section directive can be one of two forms:</p>
1329
1330     <ul>
1331       <li><var>parameter-name</var></li>
1332
1333       <li><code>!</code><var>parameter-name</var></li>
1334     </ul>
1335
1336     <p>In the former case, the directives between the start and end
1337     markers are only processed if the parameter named
1338     <var>parameter-name</var> is defined. The second format reverses
1339     the test, and only processes the directives if
1340     <var>parameter-name</var> is <strong>not</strong> defined.</p>
1341
1342     <p>The <var>parameter-name</var> argument is a define as given on
1343     the <program>httpd</program> command line via <code>-D<var>parameter-</var>
1344     </code>, at the time the server was started.</p>
1345
1346     <p><directive type="section">IfDefine</directive> sections are
1347     nest-able, which can be used to implement simple
1348     multiple-parameter tests. Example:</p>
1349
1350     <example>
1351       httpd -DReverseProxy ...<br />
1352       <br />
1353       # httpd.conf<br />
1354       &lt;IfDefine ReverseProxy&gt;<br />
1355       <indent>
1356         LoadModule rewrite_module modules/mod_rewrite.so<br />
1357         LoadModule proxy_module   modules/libproxy.so<br />
1358       </indent>
1359       &lt;/IfDefine&gt;
1360     </example>
1361 </usage>
1362 </directivesynopsis>
1363
1364 <directivesynopsis type="section">
1365 <name>IfModule</name>
1366 <description>Encloses directives that are processed conditional on the
1367 presence or absence of a specific module</description>
1368 <syntax>&lt;IfModule [!]<var>module-file</var>|<var>module-identifier</var>&gt; ...
1369     &lt;/IfModule&gt;</syntax>
1370 <contextlist><context>server config</context><context>virtual host</context>
1371 <context>directory</context><context>.htaccess</context>
1372 </contextlist>
1373 <override>All</override>
1374 <compatibility>Module identifiers are available in version 2.1 and
1375 later.</compatibility>
1376
1377 <usage>
1378     <p>The <code>&lt;IfModule <var>test</var>&gt;...&lt;/IfModule&gt;</code>
1379     section is used to mark directives that are conditional on the presence of
1380     a specific module. The directives within an <directive type="section"
1381     >IfModule</directive> section are only processed if the <var>test</var>
1382     is true. If <var>test</var> is false, everything between the start and
1383     end markers is ignored.</p>
1384
1385     <p>The <var>test</var> in the <directive type="section"
1386     >IfModule</directive> section directive can be one of two forms:</p>
1387
1388     <ul>
1389       <li><var>module</var></li>
1390
1391       <li>!<var>module</var></li>
1392     </ul>
1393
1394     <p>In the former case, the directives between the start and end
1395     markers are only processed if the module named <var>module</var>
1396     is included in Apache -- either compiled in or
1397     dynamically loaded using <directive module="mod_so"
1398     >LoadModule</directive>. The second format reverses the test,
1399     and only processes the directives if <var>module</var> is
1400     <strong>not</strong> included.</p>
1401
1402     <p>The <var>module</var> argument can be either the module identifier or
1403     the file name of the module, at the time it was compiled.  For example,
1404     <code>rewrite_module</code> is the identifier and
1405     <code>mod_rewrite.c</code> is the file name. If a module consists of
1406     several source files, use the name of the file containing the string
1407     <code>STANDARD20_MODULE_STUFF</code>.</p>
1408
1409     <p><directive type="section">IfModule</directive> sections are
1410     nest-able, which can be used to implement simple multiple-module
1411     tests.</p>
1412
1413     <note>This section should only be used if you need to have one
1414     configuration file that works whether or not a specific module
1415     is available. In normal operation, directives need not be
1416     placed in <directive type="section">IfModule</directive>
1417     sections.</note>
1418 </usage>
1419 </directivesynopsis>
1420
1421 <directivesynopsis>
1422 <name>Include</name>
1423 <description>Includes other configuration files from within
1424 the server configuration files</description>
1425 <syntax>Include <var>file-path</var>|<var>directory-path</var></syntax>
1426 <contextlist><context>server config</context><context>virtual host</context>
1427 <context>directory</context>
1428 </contextlist>
1429 <compatibility>Wildcard matching available in 2.0.41 and later</compatibility>
1430
1431 <usage>
1432     <p>This directive allows inclusion of other configuration files
1433     from within the server configuration files.</p>
1434
1435     <p>Shell-style (<code>fnmatch()</code>) wildcard characters can be used to
1436     include several files at once, in alphabetical order. In
1437     addition, if <directive>Include</directive> points to a directory,
1438     rather than a file, Apache will read all files in that directory
1439     and any subdirectory.  But including entire directories is not
1440     recommended, because it is easy to accidentally leave temporary
1441     files in a directory that can cause <program>httpd</program> to
1442     fail.</p>
1443
1444     <p>The file path specified may be an absolute path, or may be relative 
1445     to the <directive module="core">ServerRoot</directive> directory.</p>
1446
1447     <p>Examples:</p>
1448
1449     <example>
1450       Include /usr/local/apache2/conf/ssl.conf<br />
1451       Include /usr/local/apache2/conf/vhosts/*.conf
1452     </example>
1453
1454     <p>Or, providing paths relative to your <directive
1455     module="core">ServerRoot</directive> directory:</p>
1456
1457     <example>
1458       Include conf/ssl.conf<br />
1459       Include conf/vhosts/*.conf
1460     </example>
1461
1462     <p>Running <code>apachectl configtest</code> will give you a list
1463     of the files that are being processed during the configuration
1464     check:</p>
1465
1466     <example>
1467       root@host# apachectl configtest<br />
1468       Processing config file: /usr/local/apache2/conf/ssl.conf<br />
1469       Processing config file: /usr/local/apache2/conf/vhosts/vhost1.conf<br />
1470       Processing config file: /usr/local/apache2/conf/vhosts/vhost2.conf<br />
1471       Syntax OK
1472     </example>
1473 </usage>
1474
1475 <seealso><program>apachectl</program></seealso>
1476 </directivesynopsis>
1477
1478 <directivesynopsis>
1479 <name>KeepAlive</name>
1480 <description>Enables HTTP persistent connections</description>
1481 <syntax>KeepAlive On|Off</syntax>
1482 <default>KeepAlive On</default>
1483 <contextlist><context>server config</context><context>virtual host</context>
1484 </contextlist>
1485
1486 <usage>
1487     <p>The Keep-Alive extension to HTTP/1.0 and the persistent
1488     connection feature of HTTP/1.1 provide long-lived HTTP sessions
1489     which allow multiple requests to be sent over the same TCP
1490     connection. In some cases this has been shown to result in an
1491     almost 50% speedup in latency times for HTML documents with
1492     many images. To enable Keep-Alive connections, set
1493     <code>KeepAlive On</code>.</p>
1494
1495     <p>For HTTP/1.0 clients, Keep-Alive connections will only be
1496     used if they are specifically requested by a client. In
1497     addition, a Keep-Alive connection with an HTTP/1.0 client can
1498     only be used when the length of the content is known in
1499     advance. This implies that dynamic content such as CGI output,
1500     SSI pages, and server-generated directory listings will
1501     generally not use Keep-Alive connections to HTTP/1.0 clients.
1502     For HTTP/1.1 clients, persistent connections are the default
1503     unless otherwise specified. If the client requests it, chunked
1504     encoding will be used in order to send content of unknown
1505     length over persistent connections.</p>
1506 </usage>
1507
1508 <seealso><directive module="core">MaxKeepAliveRequests</directive></seealso>
1509 </directivesynopsis>
1510
1511 <directivesynopsis>
1512 <name>KeepAliveTimeout</name>
1513 <description>Amount of time the server will wait for subsequent
1514 requests on a persistent connection</description>
1515 <syntax>KeepAliveTimeout <var>seconds</var></syntax>
1516 <default>KeepAliveTimeout 5</default>
1517 <contextlist><context>server config</context><context>virtual host</context>
1518 </contextlist>
1519
1520 <usage>
1521     <p>The number of seconds Apache will wait for a subsequent
1522     request before closing the connection. Once a request has been
1523     received, the timeout value specified by the
1524     <directive module="core">Timeout</directive> directive applies.</p>
1525
1526     <p>Setting <directive>KeepAliveTimeout</directive> to a high value
1527     may cause performance problems in heavily loaded servers. The
1528     higher the timeout, the more server processes will be kept
1529     occupied waiting on connections with idle clients.</p>
1530 </usage>
1531 </directivesynopsis>
1532
1533 <directivesynopsis type="section">
1534 <name>Limit</name>
1535 <description>Restrict enclosed access controls to only certain HTTP
1536 methods</description>
1537 <syntax>&lt;Limit <var>method</var> [<var>method</var>] ... &gt; ...
1538     &lt;/Limit&gt;</syntax>
1539 <contextlist><context>server config</context><context>virtual host</context>
1540 <context>directory</context><context>.htaccess</context>
1541 </contextlist>
1542 <override>All</override>
1543
1544 <usage>
1545     <p>Access controls are normally effective for
1546     <strong>all</strong> access methods, and this is the usual
1547     desired behavior. <strong>In the general case, access control
1548     directives should not be placed within a
1549     <directive type="section">Limit</directive> section.</strong></p>
1550
1551     <p>The purpose of the <directive type="section">Limit</directive>
1552     directive is to restrict the effect of the access controls to the
1553     nominated HTTP methods. For all other methods, the access
1554     restrictions that are enclosed in the <directive
1555     type="section">Limit</directive> bracket <strong>will have no
1556     effect</strong>. The following example applies the access control
1557     only to the methods <code>POST</code>, <code>PUT</code>, and
1558     <code>DELETE</code>, leaving all other methods unprotected:</p>
1559
1560     <example>
1561       &lt;Limit POST PUT DELETE&gt;<br />
1562       <indent>
1563         Require valid-user<br />
1564       </indent>
1565       &lt;/Limit&gt;
1566     </example>
1567
1568     <p>The method names listed can be one or more of: <code>GET</code>,
1569     <code>POST</code>, <code>PUT</code>, <code>DELETE</code>,
1570     <code>CONNECT</code>, <code>OPTIONS</code>,
1571     <code>PATCH</code>, <code>PROPFIND</code>, <code>PROPPATCH</code>,
1572     <code>MKCOL</code>, <code>COPY</code>, <code>MOVE</code>,
1573     <code>LOCK</code>, and <code>UNLOCK</code>. <strong>The method name is
1574     case-sensitive.</strong> If <code>GET</code> is used it will also
1575     restrict <code>HEAD</code> requests. The <code>TRACE</code> method
1576     cannot be limited.</p>
1577
1578     <note type="warning">A <directive type="section"
1579     module="core">LimitExcept</directive> section should always be
1580     used in preference to a <directive type="section"
1581     module="core">Limit</directive> section when restricting access,
1582     since a <directive type="section"
1583     module="core">LimitExcept</directive> section provides protection
1584     against arbitrary methods.</note>
1585
1586 </usage>
1587 </directivesynopsis>
1588
1589 <directivesynopsis type="section">
1590 <name>LimitExcept</name>
1591 <description>Restrict access controls to all HTTP methods
1592 except the named ones</description>
1593 <syntax>&lt;LimitExcept <var>method</var> [<var>method</var>] ... &gt; ...
1594     &lt;/LimitExcept&gt;</syntax>
1595 <contextlist><context>server config</context><context>virtual host</context>
1596 <context>directory</context><context>.htaccess</context>
1597 </contextlist>
1598 <override>All</override>
1599
1600 <usage>
1601     <p><directive type="section">LimitExcept</directive> and
1602     <code>&lt;/LimitExcept&gt;</code> are used to enclose
1603     a group of access control directives which will then apply to any
1604     HTTP access method <strong>not</strong> listed in the arguments;
1605     i.e., it is the opposite of a <directive type="section"
1606     module="core">Limit</directive> section and can be used to control
1607     both standard and nonstandard/unrecognized methods. See the
1608     documentation for <directive module="core"
1609     type="section">Limit</directive> for more details.</p>
1610
1611     <p>For example:</p>
1612
1613     <example>
1614       &lt;LimitExcept POST GET&gt;<br />
1615       <indent>
1616         Require valid-user<br />
1617       </indent>
1618       &lt;/LimitExcept&gt;
1619     </example>
1620
1621 </usage>
1622 </directivesynopsis>
1623
1624 <directivesynopsis>
1625 <name>LimitInternalRecursion</name>
1626 <description>Determine maximum number of internal redirects and nested
1627 subrequests</description>
1628 <syntax>LimitInternalRecursion <var>number</var> [<var>number</var>]</syntax>
1629 <default>LimitInternalRecursion 10</default>
1630 <contextlist><context>server config</context><context>virtual host</context>
1631 </contextlist>
1632 <compatibility>Available in Apache 2.0.47 and later</compatibility>
1633
1634 <usage>
1635     <p>An internal redirect happens, for example, when using the <directive
1636     module="mod_actions">Action</directive> directive, which internally
1637     redirects the original request to a CGI script. A subrequest is Apache's
1638     mechanism to find out what would happen for some URI if it were requested.
1639     For example, <module>mod_dir</module> uses subrequests to look for the
1640     files listed in the <directive module="mod_dir">DirectoryIndex</directive>
1641     directive.</p>
1642
1643     <p><directive>LimitInternalRecursion</directive> prevents the server
1644     from crashing when entering an infinite loop of internal redirects or
1645     subrequests. Such loops are usually caused by misconfigurations.</p>
1646
1647     <p>The directive stores two different limits, which are evaluated on
1648     per-request basis. The first <var>number</var> is the maximum number of
1649     internal redirects, that may follow each other. The second <var>number</var>
1650     determines, how deep subrequests may be nested. If you specify only one
1651     <var>number</var>, it will be assigned to both limits.</p>
1652
1653     <example><title>Example</title>
1654       LimitInternalRecursion 5
1655     </example>
1656 </usage>
1657 </directivesynopsis>
1658
1659 <directivesynopsis>
1660 <name>LimitRequestBody</name>
1661 <description>Restricts the total size of the HTTP request body sent
1662 from the client</description>
1663 <syntax>LimitRequestBody <var>bytes</var></syntax>
1664 <default>LimitRequestBody 0</default>
1665 <contextlist><context>server config</context><context>virtual host</context>
1666 <context>directory</context><context>.htaccess</context>
1667 </contextlist>
1668 <override>All</override>
1669
1670 <usage>
1671     <p>This directive specifies the number of <var>bytes</var> from 0
1672     (meaning unlimited) to 2147483647 (2GB) that are allowed in a
1673     request body.</p>
1674
1675     <p>The <directive>LimitRequestBody</directive> directive allows
1676     the user to set a limit on the allowed size of an HTTP request
1677     message body within the context in which the directive is given
1678     (server, per-directory, per-file or per-location). If the client
1679     request exceeds that limit, the server will return an error
1680     response instead of servicing the request. The size of a normal
1681     request message body will vary greatly depending on the nature of
1682     the resource and the methods allowed on that resource. CGI scripts
1683     typically use the message body for retrieving form information.
1684     Implementations of the <code>PUT</code> method will require
1685     a value at least as large as any representation that the server
1686     wishes to accept for that resource.</p>
1687
1688     <p>This directive gives the server administrator greater
1689     control over abnormal client request behavior, which may be
1690     useful for avoiding some forms of denial-of-service
1691     attacks.</p>
1692
1693     <p>If, for example, you are permitting file upload to a particular
1694     location, and wish to limit the size of the uploaded file to 100K,
1695     you might use the following directive:</p>
1696
1697     <example>
1698       LimitRequestBody 102400
1699     </example>
1700
1701 </usage>
1702 </directivesynopsis>
1703
1704 <directivesynopsis>
1705 <name>LimitRequestFields</name>
1706 <description>Limits the number of HTTP request header fields that
1707 will be accepted from the client</description>
1708 <syntax>LimitRequestFields <var>number</var></syntax>
1709 <default>LimitRequestFields 100</default>
1710 <contextlist><context>server config</context></contextlist>
1711
1712 <usage>
1713     <p><var>Number</var> is an integer from 0 (meaning unlimited) to
1714     32767. The default value is defined by the compile-time
1715     constant <code>DEFAULT_LIMIT_REQUEST_FIELDS</code> (100 as
1716     distributed).</p>
1717
1718     <p>The <directive>LimitRequestFields</directive> directive allows
1719     the server administrator to modify the limit on the number of
1720     request header fields allowed in an HTTP request. A server needs
1721     this value to be larger than the number of fields that a normal
1722     client request might include. The number of request header fields
1723     used by a client rarely exceeds 20, but this may vary among
1724     different client implementations, often depending upon the extent
1725     to which a user has configured their browser to support detailed
1726     content negotiation. Optional HTTP extensions are often expressed
1727     using request header fields.</p>
1728
1729     <p>This directive gives the server administrator greater
1730     control over abnormal client request behavior, which may be
1731     useful for avoiding some forms of denial-of-service attacks.
1732     The value should be increased if normal clients see an error
1733     response from the server that indicates too many fields were
1734     sent in the request.</p>
1735
1736     <p>For example:</p>
1737
1738     <example>
1739       LimitRequestFields 50
1740     </example>
1741
1742 </usage>
1743 </directivesynopsis>
1744
1745 <directivesynopsis>
1746 <name>LimitRequestFieldSize</name>
1747 <description>Limits the size of the HTTP request header allowed from the
1748 client</description>
1749 <syntax>LimitRequestFieldsize <var>bytes</var></syntax>
1750 <default>LimitRequestFieldsize 8190</default>
1751 <contextlist><context>server config</context></contextlist>
1752
1753 <usage>
1754     <p>This directive specifies the number of <var>bytes</var>
1755     that will be allowed in an HTTP request header.</p>
1756
1757     <p>The <directive>LimitRequestFieldSize</directive> directive
1758     allows the server administrator to reduce or increase the limit 
1759     on the allowed size of an HTTP request header field. A server
1760     needs this value to be large enough to hold any one header field 
1761     from a normal client request. The size of a normal request header 
1762     field will vary greatly among different client implementations, 
1763     often depending upon the extent to which a user has configured
1764     their browser to support detailed content negotiation. SPNEGO
1765     authentication headers can be up to 12392 bytes.</p>
1766
1767     <p>This directive gives the server administrator greater
1768     control over abnormal client request behavior, which may be
1769     useful for avoiding some forms of denial-of-service attacks.</p>
1770
1771     <p>For example:</p>
1772
1773     <example>
1774       LimitRequestFieldSize 4094
1775     </example>
1776
1777     <note>Under normal conditions, the value should not be changed from
1778     the default.</note>
1779
1780 </usage>
1781 </directivesynopsis>
1782
1783 <directivesynopsis>
1784 <name>LimitRequestLine</name>
1785 <description>Limit the size of the HTTP request line that will be accepted
1786 from the client</description>
1787 <syntax>LimitRequestLine <var>bytes</var></syntax>
1788 <default>LimitRequestLine 8190</default>
1789 <contextlist><context>server config</context></contextlist>
1790
1791 <usage>
1792     <p>This directive sets the number of <var>bytes</var> that will be 
1793     allowed on the HTTP request-line.</p>
1794
1795     <p>The <directive>LimitRequestLine</directive> directive allows
1796     the server administrator to reduce or increase the limit on the allowed size
1797     of a client's HTTP request-line. Since the request-line consists of the
1798     HTTP method, URI, and protocol version, the
1799     <directive>LimitRequestLine</directive> directive places a
1800     restriction on the length of a request-URI allowed for a request
1801     on the server. A server needs this value to be large enough to
1802     hold any of its resource names, including any information that
1803     might be passed in the query part of a <code>GET</code> request.</p>
1804
1805     <p>This directive gives the server administrator greater
1806     control over abnormal client request behavior, which may be
1807     useful for avoiding some forms of denial-of-service attacks.</p>
1808
1809     <p>For example:</p>
1810
1811     <example>
1812       LimitRequestLine 4094
1813     </example>
1814
1815     <note>Under normal conditions, the value should not be changed from
1816     the default.</note>
1817 </usage>
1818 </directivesynopsis>
1819
1820 <directivesynopsis>
1821 <name>LimitXMLRequestBody</name>
1822 <description>Limits the size of an XML-based request body</description>
1823 <syntax>LimitXMLRequestBody <var>bytes</var></syntax>
1824 <default>LimitXMLRequestBody 1000000</default>
1825 <contextlist><context>server config</context><context>virtual host</context>
1826 <context>directory</context><context>.htaccess</context></contextlist>
1827 <override>All</override>
1828
1829 <usage>
1830     <p>Limit (in bytes) on maximum size of an XML-based request
1831     body. A value of <code>0</code> will disable any checking.</p>
1832
1833     <p>Example:</p>
1834
1835     <example>
1836       LimitXMLRequestBody 0
1837     </example>
1838
1839 </usage>
1840 </directivesynopsis>
1841
1842 <directivesynopsis type="section">
1843 <name>Location</name>
1844 <description>Applies the enclosed directives only to matching
1845 URLs</description>
1846 <syntax>&lt;Location
1847     <var>URL-path</var>|<var>URL</var>&gt; ... &lt;/Location&gt;</syntax>
1848 <contextlist><context>server config</context><context>virtual host</context>
1849 </contextlist>
1850
1851 <usage>
1852     <p>The <directive type="section">Location</directive> directive
1853     limits the scope of the enclosed directives by URL. It is similar to the
1854     <directive type="section" module="core">Directory</directive>
1855     directive, and starts a subsection which is terminated with a
1856     <code>&lt;/Location&gt;</code> directive. <directive
1857     type="section">Location</directive> sections are processed in the
1858     order they appear in the configuration file, after the <directive
1859     type="section" module="core">Directory</directive> sections and
1860     <code>.htaccess</code> files are read, and after the <directive
1861     type="section" module="core">Files</directive> sections.</p>
1862
1863     <p><directive type="section">Location</directive> sections operate
1864     completely outside the filesystem.  This has several consequences.
1865     Most importantly, <directive type="section">Location</directive>
1866     directives should not be used to control access to filesystem
1867     locations.  Since several different URLs may map to the same
1868     filesystem location, such access controls may by circumvented.</p>
1869
1870     <note><title>When to use <directive 
1871     type="section">Location</directive></title>
1872
1873     <p>Use <directive type="section">Location</directive> to apply
1874     directives to content that lives outside the filesystem.  For
1875     content that lives in the filesystem, use <directive
1876     type="section" module="core">Directory</directive> and <directive
1877     type="section" module="core">Files</directive>.  An exception is
1878     <code>&lt;Location /&gt;</code>, which is an easy way to 
1879     apply a configuration to the entire server.</p>
1880     </note>
1881
1882     <p>For all origin (non-proxy) requests, the URL to be matched is a
1883     URL-path of the form <code>/path/</code>.  No scheme, hostname,
1884     port, or query string may be included.  For proxy requests, the
1885     URL to be matched is of the form
1886     <code>scheme://servername/path</code>, and you must include the
1887     prefix.</p>
1888
1889     <p>The URL may use wildcards. In a wild-card string, <code>?</code> matches
1890     any single character, and <code>*</code> matches any sequences of
1891     characters.</p>
1892
1893     <p>Extended regular
1894     expressions can also be used, with the addition of the
1895     <code>~</code> character. For example:</p>
1896
1897     <example>
1898       &lt;Location ~ "/(extra|special)/data"&gt;
1899     </example>
1900
1901     <p>would match URLs that contained the substring <code>/extra/data</code>
1902     or <code>/special/data</code>. The directive <directive
1903     type="section" module="core">LocationMatch</directive> behaves
1904     identical to the regex version of <directive
1905     type="section">Location</directive>.</p>
1906
1907     <p>The <directive type="section">Location</directive>
1908     functionality is especially useful when combined with the
1909     <directive module="core">SetHandler</directive>
1910     directive. For example, to enable status requests, but allow them
1911     only from browsers at <code>foo.com</code>, you might use:</p>
1912
1913     <example>
1914       &lt;Location /status&gt;<br />
1915       <indent>
1916         SetHandler server-status<br />
1917         Order Deny,Allow<br />
1918         Deny from all<br />
1919         Allow from .foo.com<br />
1920       </indent>
1921       &lt;/Location&gt;
1922     </example>
1923
1924     <note><title>Note about / (slash)</title>
1925       <p>The slash character has special meaning depending on where in a
1926       URL it appears. People may be used to its behavior in the filesystem
1927       where multiple adjacent slashes are frequently collapsed to a single
1928       slash (<em>i.e.</em>, <code>/home///foo</code> is the same as
1929       <code>/home/foo</code>). In URL-space this is not necessarily true.
1930       The <directive type="section" module="core">LocationMatch</directive>
1931       directive and the regex version of <directive type="section"
1932       >Location</directive> require you to explicitly specify multiple
1933       slashes if that is your intention.</p>
1934
1935       <p>For example, <code>&lt;LocationMatch ^/abc&gt;</code> would match
1936       the request URL <code>/abc</code> but not the request URL <code>
1937       //abc</code>. The (non-regex) <directive type="section"
1938       >Location</directive> directive behaves similarly when used for
1939       proxy requests. But when (non-regex) <directive type="section"
1940       >Location</directive> is used for non-proxy requests it will
1941       implicitly match multiple slashes with a single slash. For example,
1942       if you specify <code>&lt;Location /abc/def&gt;</code> and the
1943       request is to <code>/abc//def</code> then it will match.</p>
1944     </note>
1945 </usage>
1946 <seealso><a href="../sections.html">How &lt;Directory&gt;, &lt;Location&gt;
1947     and &lt;Files&gt; sections work</a> for an explanation of how these
1948     different sections are combined when a request is received</seealso>
1949 </directivesynopsis>
1950
1951 <directivesynopsis type="section">
1952 <name>LocationMatch</name>
1953 <description>Applies the enclosed directives only to regular-expression
1954 matching URLs</description>
1955 <syntax>&lt;LocationMatch
1956     <var>regex</var>&gt; ... &lt;/LocationMatch&gt;</syntax>
1957 <contextlist><context>server config</context><context>virtual host</context>
1958 </contextlist>
1959
1960 <usage>
1961     <p>The <directive type="section">LocationMatch</directive> directive
1962     limits the scope of the enclosed directives by URL, in an identical manner
1963     to <directive module="core" type="section">Location</directive>. However,
1964     it takes a regular expression as an argument instead of a simple
1965     string. For example:</p>
1966
1967     <example>
1968       &lt;LocationMatch "/(extra|special)/data"&gt;
1969     </example>
1970
1971     <p>would match URLs that contained the substring <code>/extra/data</code>
1972     or <code>/special/data</code>.</p>
1973 </usage>
1974
1975 <seealso><a href="../sections.html">How &lt;Directory&gt;, &lt;Location&gt;
1976     and &lt;Files&gt; sections work</a> for an explanation of how these
1977     different sections are combined when a request is received</seealso>
1978 </directivesynopsis>
1979
1980 <directivesynopsis>
1981 <name>LogLevel</name>
1982 <description>Controls the verbosity of the ErrorLog</description>
1983 <syntax>LogLevel <var>level</var></syntax>
1984 <default>LogLevel warn</default>
1985 <contextlist><context>server config</context><context>virtual host</context>
1986 </contextlist>
1987
1988 <usage>
1989     <p><directive>LogLevel</directive> adjusts the verbosity of the
1990     messages recorded in the error logs (see <directive
1991     module="core">ErrorLog</directive> directive). The following
1992     <var>level</var>s are available, in order of decreasing
1993     significance:</p>
1994
1995     <table border="1">
1996     <columnspec><column width=".2"/><column width=".3"/><column width=".5"/>
1997     </columnspec>
1998       <tr>
1999         <th><strong>Level</strong> </th>
2000
2001         <th><strong>Description</strong> </th>
2002
2003         <th><strong>Example</strong> </th>
2004       </tr>
2005
2006       <tr>
2007         <td><code>emerg</code> </td>
2008
2009         <td>Emergencies - system is unusable.</td>
2010
2011         <td>"Child cannot open lock file. Exiting"</td>
2012       </tr>
2013
2014       <tr>
2015         <td><code>alert</code> </td>
2016
2017         <td>Action must be taken immediately.</td>
2018
2019         <td>"getpwuid: couldn't determine user name from uid"</td>
2020       </tr>
2021
2022       <tr>
2023         <td><code>crit</code> </td>
2024
2025         <td>Critical Conditions.</td>
2026
2027         <td>"socket: Failed to get a socket, exiting child"</td>
2028       </tr>
2029
2030       <tr>
2031         <td><code>error</code> </td>
2032
2033         <td>Error conditions.</td>
2034
2035         <td>"Premature end of script headers"</td>
2036       </tr>
2037
2038       <tr>
2039         <td><code>warn</code> </td>
2040
2041         <td>Warning conditions.</td>
2042
2043         <td>"child process 1234 did not exit, sending another
2044         SIGHUP"</td>
2045       </tr>
2046
2047       <tr>
2048         <td><code>notice</code> </td>
2049
2050         <td>Normal but significant condition.</td>
2051
2052         <td>"httpd: caught SIGBUS, attempting to dump core in
2053         ..."</td>
2054       </tr>
2055
2056       <tr>
2057         <td><code>info</code> </td>
2058
2059         <td>Informational.</td>
2060
2061         <td>"Server seems busy, (you may need to increase
2062         StartServers, or Min/MaxSpareServers)..."</td>
2063       </tr>
2064
2065       <tr>
2066         <td><code>debug</code> </td>
2067
2068         <td>Debug-level messages</td>
2069
2070         <td>"Opening config file ..."</td>
2071       </tr>
2072     </table>
2073
2074     <p>When a particular level is specified, messages from all
2075     other levels of higher significance will be reported as well.
2076     <em>E.g.</em>, when <code>LogLevel info</code> is specified,
2077     then messages with log levels of <code>notice</code> and
2078     <code>warn</code> will also be posted.</p>
2079
2080     <p>Using a level of at least <code>crit</code> is
2081     recommended.</p>
2082
2083     <p>For example:</p>
2084
2085     <example>
2086       LogLevel notice
2087     </example>
2088
2089     <note><title>Note</title>
2090       <p>When logging to a regular file messages of the level
2091       <code>notice</code> cannot be suppressed and thus are always
2092       logged. However, this doesn't apply when logging is done
2093       using <code>syslog</code>.</p>
2094     </note>
2095 </usage>
2096 </directivesynopsis>
2097
2098 <directivesynopsis>
2099 <name>MaxKeepAliveRequests</name>
2100 <description>Number of requests allowed on a persistent
2101 connection</description>
2102 <syntax>MaxKeepAliveRequests <var>number</var></syntax>
2103 <default>MaxKeepAliveRequests 100</default>
2104 <contextlist><context>server config</context><context>virtual host</context>
2105 </contextlist>
2106
2107 <usage>
2108     <p>The <directive>MaxKeepAliveRequests</directive> directive
2109     limits the number of requests allowed per connection when
2110     <directive module="core" >KeepAlive</directive> is on. If it is
2111     set to <code>0</code>, unlimited requests will be allowed. We
2112     recommend that this setting be kept to a high value for maximum
2113     server performance.</p>
2114
2115     <p>For example:</p>
2116
2117     <example>
2118       MaxKeepAliveRequests 500
2119     </example>
2120 </usage>
2121 </directivesynopsis>
2122
2123 <directivesynopsis>
2124 <name>NameVirtualHost</name>
2125 <description>Designates an IP address for name-virtual
2126 hosting</description>
2127 <syntax>NameVirtualHost <var>addr</var>[:<var>port</var>]</syntax>
2128 <contextlist><context>server config</context></contextlist>
2129
2130 <usage>
2131     <p>The <directive>NameVirtualHost</directive> directive is a
2132     required directive if you want to configure <a
2133     href="../vhosts/">name-based virtual hosts</a>.</p>
2134
2135     <p>Although <var>addr</var> can be hostname it is recommended
2136     that you always use an IP address, e.g.</p>
2137
2138     <example>
2139       NameVirtualHost 111.22.33.44
2140     </example>
2141
2142     <p>With the <directive>NameVirtualHost</directive> directive you
2143     specify the IP address on which the server will receive requests
2144     for the name-based virtual hosts. This will usually be the address
2145     to which your name-based virtual host names resolve. In cases
2146     where a firewall or other proxy receives the requests and forwards
2147     them on a different IP address to the server, you must specify the
2148     IP address of the physical interface on the machine which will be
2149     servicing the requests. If you have multiple name-based hosts on
2150     multiple addresses, repeat the directive for each address.</p>
2151
2152     <note><title>Note</title>
2153       <p>Note, that the "main server" and any <code>_default_</code> servers
2154       will <strong>never</strong> be served for a request to a
2155       <directive>NameVirtualHost</directive> IP address (unless for some
2156       reason you specify <directive>NameVirtualHost</directive> but then
2157       don't define any <directive>VirtualHost</directive>s for that
2158       address).</p>
2159     </note>
2160
2161     <p>Optionally you can specify a port number on which the
2162     name-based virtual hosts should be used, e.g.</p>
2163
2164     <example>
2165       NameVirtualHost 111.22.33.44:8080
2166     </example>
2167
2168     <p>IPv6 addresses must be enclosed in square brackets, as shown
2169     in the following example:</p>
2170
2171     <example>
2172       NameVirtualHost [fe80::a00:20ff:fea7:ccea]:8080
2173     </example>
2174
2175     <p>To receive requests on all interfaces, you can use an argument of
2176     <code>*</code></p>
2177
2178     <example>
2179       NameVirtualHost *
2180     </example>
2181
2182     <note><title>Argument to <directive type="section">VirtualHost</directive>
2183       directive</title>
2184       <p>Note that the argument to the <directive
2185        type="section">VirtualHost</directive> directive must
2186       exactly match the argument to the <directive
2187       >NameVirtualHost</directive> directive.</p>
2188
2189       <example>
2190         NameVirtualHost 1.2.3.4<br />
2191         &lt;VirtualHost 1.2.3.4&gt;<br />
2192         # ...<br />
2193         &lt;/VirtualHost&gt;<br />
2194       </example>
2195     </note>
2196 </usage>
2197
2198 <seealso><a href="../vhosts/">Virtual Hosts
2199 documentation</a></seealso>
2200
2201 </directivesynopsis>
2202
2203 <directivesynopsis>
2204 <name>Options</name>
2205 <description>Configures what features are available in a particular
2206 directory</description>
2207 <syntax>Options
2208     [+|-]<var>option</var> [[+|-]<var>option</var>] ...</syntax>
2209 <default>Options All</default>
2210 <contextlist><context>server config</context><context>virtual host</context>
2211 <context>directory</context><context>.htaccess</context>
2212 </contextlist>
2213 <override>Options</override>
2214
2215 <usage>
2216     <p>The <directive>Options</directive> directive controls which
2217     server features are available in a particular directory.</p>
2218
2219     <p><var>option</var> can be set to <code>None</code>, in which
2220     case none of the extra features are enabled, or one or more of
2221     the following:</p>
2222
2223     <dl>
2224       <dt><code>All</code></dt>
2225
2226       <dd>All options except for <code>MultiViews</code>. This is the default
2227       setting.</dd>
2228
2229       <dt><code>ExecCGI</code></dt>
2230
2231       <dd>
2232       Execution of CGI scripts using <module>mod_cgi</module>
2233       is permitted.</dd>
2234
2235       <dt><code>FollowSymLinks</code></dt>
2236
2237       <dd>
2238
2239       The server will follow symbolic links in this directory.
2240       <note>
2241       <p>Even though the server follows the symlink it does <em>not</em>
2242       change the pathname used to match against <directive type="section"
2243       module="core">Directory</directive> sections.</p>
2244       <p>Note also, that this option <strong>gets ignored</strong> if set
2245       inside a <directive type="section" module="core">Location</directive>
2246       section.</p>
2247       </note></dd>
2248
2249       <dt><code>Includes</code></dt>
2250
2251       <dd>
2252       Server-side includes provided by <module>mod_include</module>
2253       are permitted.</dd>
2254
2255       <dt><code>IncludesNOEXEC</code></dt>
2256
2257       <dd>
2258
2259       Server-side includes are permitted, but the <code>#exec
2260       cmd</code> and <code>#exec cgi</code> are disabled. It is still
2261       possible to <code>#include virtual</code> CGI scripts from
2262       <directive module="mod_alias">ScriptAlias</directive>ed
2263       directories.</dd>
2264
2265       <dt><code>Indexes</code></dt>
2266
2267       <dd>
2268       If a URL which maps to a directory is requested, and there
2269       is no <directive module="mod_dir">DirectoryIndex</directive>
2270       (<em>e.g.</em>, <code>index.html</code>) in that directory, then
2271       <module>mod_autoindex</module> will return a formatted listing
2272       of the directory.</dd>
2273
2274       <dt><code>MultiViews</code></dt>
2275
2276       <dd>
2277       <a href="../content-negotiation.html">Content negotiated</a>
2278       "MultiViews" are allowed using
2279       <module>mod_negotiation</module>.</dd>
2280
2281       <dt><code>SymLinksIfOwnerMatch</code></dt>
2282
2283       <dd>The server will only follow symbolic links for which the
2284       target file or directory is owned by the same user id as the
2285       link.
2286
2287       <note><title>Note</title> This option gets ignored if
2288       set inside a <directive module="core"
2289       type="section">Location</directive> section.</note>
2290       </dd>
2291     </dl>
2292
2293     <p>Normally, if multiple <directive>Options</directive> could
2294     apply to a directory, then the most specific one is used and
2295     others are ignored; the options are not merged. (See <a
2296     href="../sections.html#mergin">how sections are merged</a>.)
2297     However if <em>all</em> the options on the
2298     <directive>Options</directive> directive are preceded by a
2299     <code>+</code> or <code>-</code> symbol, the options are
2300     merged. Any options preceded by a <code>+</code> are added to the
2301     options currently in force, and any options preceded by a
2302     <code>-</code> are removed from the options currently in
2303     force. </p>
2304
2305     <p>For example, without any <code>+</code> and <code>-</code> symbols:</p>
2306
2307     <example>
2308       &lt;Directory /web/docs&gt;<br />
2309       <indent>
2310         Options Indexes FollowSymLinks<br />
2311       </indent>
2312       &lt;/Directory&gt;<br />
2313       <br />
2314       &lt;Directory /web/docs/spec&gt;<br />
2315       <indent>
2316         Options Includes<br />
2317       </indent>
2318       &lt;/Directory&gt;
2319     </example>
2320
2321     <p>then only <code>Includes</code> will be set for the
2322     <code>/web/docs/spec</code> directory. However if the second
2323     <directive>Options</directive> directive uses the <code>+</code> and
2324     <code>-</code> symbols:</p>
2325
2326     <example>
2327       &lt;Directory /web/docs&gt;<br />
2328       <indent>
2329         Options Indexes FollowSymLinks<br />
2330       </indent>
2331       &lt;/Directory&gt;<br />
2332       <br />
2333       &lt;Directory /web/docs/spec&gt;<br />
2334       <indent>
2335         Options +Includes -Indexes<br />
2336       </indent>
2337       &lt;/Directory&gt;
2338     </example>
2339
2340     <p>then the options <code>FollowSymLinks</code> and
2341     <code>Includes</code> are set for the <code>/web/docs/spec</code>
2342     directory.</p>
2343
2344     <note><title>Note</title>
2345       <p>Using <code>-IncludesNOEXEC</code> or
2346       <code>-Includes</code> disables server-side includes completely
2347       regardless of the previous setting.</p>
2348     </note>
2349
2350     <p>The default in the absence of any other settings is
2351     <code>All</code>.</p>
2352 </usage>
2353 </directivesynopsis>
2354
2355 <directivesynopsis>
2356 <name>Require</name>
2357 <description>Selects which authenticated users can access
2358 a resource</description>
2359 <syntax>Require <var>entity-name</var> [<var>entity-name</var>] ...</syntax>
2360 <contextlist><context>directory</context><context>.htaccess</context>
2361 </contextlist>
2362 <override>AuthConfig</override>
2363
2364 <usage>
2365     <p>This directive selects which authenticated users can access
2366     a resource. The allowed syntaxes are:</p>
2367
2368     <dl>
2369       <dt><code>Require user <var>userid</var> [<var>userid</var>]
2370       ...</code></dt>
2371       <dd>Only the named users can access the resource.</dd>
2372
2373       <dt><code>Require group <var>group-name</var> [<var>group-name</var>]
2374       ...</code></dt>
2375       <dd>Only users in the named groups can access the resource.</dd>
2376
2377       <dt><code>Require valid-user</code></dt>
2378       <dd>All valid users can access the resource.</dd>
2379     </dl>
2380
2381     <p><directive>Require</directive> must be accompanied by
2382     <directive module="core">AuthName</directive> and <directive
2383     module="core">AuthType</directive> directives, and directives such
2384     as <directive module="mod_authn_file">AuthUserFile</directive>
2385     and <directive module="mod_authz_groupfile">AuthGroupFile</directive> (to
2386     define users and groups) in order to work correctly. Example:</p>
2387
2388     <example>
2389        AuthType Basic<br />
2390        AuthName "Restricted Resource"<br />
2391        AuthUserFile /web/users<br />
2392        AuthGroupFile /web/groups<br />
2393        Require group admin
2394     </example>
2395
2396     <p>Access controls which are applied in this way are effective for
2397     <strong>all</strong> methods. <strong>This is what is normally
2398     desired.</strong> If you wish to apply access controls only to
2399     specific methods, while leaving other methods unprotected, then
2400     place the <directive>Require</directive> statement into a
2401     <directive module="core" type="section">Limit</directive>
2402     section.</p>
2403 </usage>
2404 <seealso><directive module="core">Satisfy</directive></seealso>
2405 <seealso><module>mod_authz_host</module></seealso>
2406 </directivesynopsis>
2407
2408 <directivesynopsis>
2409 <name>RLimitCPU</name>
2410 <description>Limits the CPU consumption of processes launched
2411 by Apache children</description>
2412 <syntax>RLimitCPU <var>seconds</var>|max [<var>seconds</var>|max]</syntax>
2413 <default>Unset; uses operating system defaults</default>
2414 <contextlist><context>server config</context><context>virtual host</context>
2415 <context>directory</context><context>.htaccess</context></contextlist>
2416 <override>All</override>
2417
2418 <usage>
2419     <p>Takes 1 or 2 parameters. The first parameter sets the soft
2420     resource limit for all processes and the second parameter sets
2421     the maximum resource limit. Either parameter can be a number,
2422     or <code>max</code> to indicate to the server that the limit should
2423     be set to the maximum allowed by the operating system
2424     configuration. Raising the maximum resource limit requires that
2425     the server is running as <code>root</code>, or in the initial startup
2426     phase.</p>
2427
2428     <p>This applies to processes forked off from Apache children
2429     servicing requests, not the Apache children themselves. This
2430     includes CGI scripts and SSI exec commands, but not any
2431     processes forked off from the Apache parent such as piped
2432     logs.</p>
2433
2434     <p>CPU resource limits are expressed in seconds per
2435     process.</p>
2436 </usage>
2437 <seealso><directive module="core">RLimitMEM</directive></seealso>
2438 <seealso><directive module="core">RLimitNPROC</directive></seealso>
2439 </directivesynopsis>
2440
2441 <directivesynopsis>
2442 <name>RLimitMEM</name>
2443 <description>Limits the memory consumption of processes launched
2444 by Apache children</description>
2445 <syntax>RLimitMEM <var>bytes</var>|max [<var>bytes</var>|max]</syntax>
2446 <default>Unset; uses operating system defaults</default>
2447 <contextlist><context>server config</context><context>virtual host</context>
2448 <context>directory</context><context>.htaccess</context></contextlist>
2449 <override>All</override>
2450
2451 <usage>
2452     <p>Takes 1 or 2 parameters. The first parameter sets the soft
2453     resource limit for all processes and the second parameter sets
2454     the maximum resource limit. Either parameter can be a number,
2455     or <code>max</code> to indicate to the server that the limit should
2456     be set to the maximum allowed by the operating system
2457     configuration. Raising the maximum resource limit requires that
2458     the server is running as <code>root</code>, or in the initial startup
2459     phase.</p>
2460
2461     <p>This applies to processes forked off from Apache children
2462     servicing requests, not the Apache children themselves. This
2463     includes CGI scripts and SSI exec commands, but not any
2464     processes forked off from the Apache parent such as piped
2465     logs.</p>
2466
2467     <p>Memory resource limits are expressed in bytes per
2468     process.</p>
2469 </usage>
2470 <seealso><directive module="core">RLimitCPU</directive></seealso>
2471 <seealso><directive module="core">RLimitNPROC</directive></seealso>
2472 </directivesynopsis>
2473
2474 <directivesynopsis>
2475 <name>RLimitNPROC</name>
2476 <description>Limits the number of processes that can be launched by
2477 processes launched by Apache children</description>
2478 <syntax>RLimitNPROC <var>number</var>|max [<var>number</var>|max]</syntax>
2479 <default>Unset; uses operating system defaults</default>
2480 <contextlist><context>server config</context><context>virtual host</context>
2481 <context>directory</context><context>.htaccess</context></contextlist>
2482 <override>All</override>
2483
2484 <usage>
2485     <p>Takes 1 or 2 parameters. The first parameter sets the soft
2486     resource limit for all processes and the second parameter sets
2487     the maximum resource limit. Either parameter can be a number,
2488     or <code>max</code> to indicate to the server that the limit
2489     should be set to the maximum allowed by the operating system
2490     configuration. Raising the maximum resource limit requires that
2491     the server is running as <code>root</code>, or in the initial startup
2492     phase.</p>
2493
2494     <p>This applies to processes forked off from Apache children
2495     servicing requests, not the Apache children themselves. This
2496     includes CGI scripts and SSI exec commands, but not any
2497     processes forked off from the Apache parent such as piped
2498     logs.</p>
2499
2500     <p>Process limits control the number of processes per user.</p>
2501
2502     <note><title>Note</title>
2503       <p>If CGI processes are <strong>not</strong> running
2504       under user ids other than the web server user id, this directive
2505       will limit the number of processes that the server itself can
2506       create. Evidence of this situation will be indicated by
2507       <strong><code>cannot fork</code></strong> messages in the
2508       <code>error_log</code>.</p>
2509     </note>
2510 </usage>
2511 <seealso><directive module="core">RLimitMEM</directive></seealso>
2512 <seealso><directive module="core">RLimitCPU</directive></seealso>
2513 </directivesynopsis>
2514
2515 <directivesynopsis>
2516 <name>Satisfy</name>
2517 <description>Interaction between host-level access control and
2518 user authentication</description>
2519 <syntax>Satisfy Any|All</syntax>
2520 <default>Satisfy All</default>
2521 <contextlist><context>directory</context><context>.htaccess</context>
2522 </contextlist>
2523 <override>AuthConfig</override>
2524 <compatibility>Influenced by <directive module="core" type="section"
2525 >Limit</directive> and <directive module="core"
2526 type="section">LimitExcept</directive> in version 2.0.51 and
2527 later</compatibility>
2528
2529 <usage>
2530     <p>Access policy if both <directive
2531     module="mod_authz_host">Allow</directive> and <directive
2532     module="core">Require</directive> used. The parameter can be
2533     either <code>All</code> or <code>Any</code>. This directive is only
2534     useful if access to a particular area is being restricted by both
2535     username/password <em>and</em> client host address. In this case
2536     the default behavior (<code>All</code>) is to require that the client
2537     passes the address access restriction <em>and</em> enters a valid
2538     username and password. With the <code>Any</code> option the client will be
2539     granted access if they either pass the host restriction or enter a
2540     valid username and password. This can be used to password restrict
2541     an area, but to let clients from particular addresses in without
2542     prompting for a password.</p>
2543
2544     <p>For example, if you wanted to let people on your network have
2545     unrestricted access to a portion of your website, but require that
2546     people outside of your network provide a password, you could use a
2547     configuration similar to the following:</p>
2548
2549     <example>
2550       Require valid-user<br />
2551       Allow from 192.168.1<br />
2552       Satisfy Any
2553     </example>
2554
2555     <p>Since version 2.0.51 <directive>Satisfy</directive> directives can
2556     be restricted to particular methods by <directive module="core"
2557     type="section">Limit</directive> and <directive module="core" type="section"
2558     >LimitExcept</directive> sections.</p>
2559 </usage>
2560    <seealso><directive module="mod_authz_host">Allow</directive></seealso>
2561    <seealso><directive module="core">Require</directive></seealso>
2562 </directivesynopsis>
2563
2564 <directivesynopsis>
2565 <name>ScriptInterpreterSource</name>
2566 <description>Technique for locating the interpreter for CGI
2567 scripts</description>
2568 <syntax>ScriptInterpreterSource Registry|Registry-Strict|Script</syntax>
2569 <default>ScriptInterpreterSource Script</default>
2570 <contextlist><context>server config</context><context>virtual host</context>
2571 <context>directory</context><context>.htaccess</context></contextlist>
2572 <override>FileInfo</override>
2573 <compatibility>Win32 only;
2574 option <code>Registry-Strict</code> is available in Apache 2.0 and
2575 later</compatibility>
2576
2577 <usage>
2578     <p>This directive is used to control how Apache finds the
2579     interpreter used to run CGI scripts. The default setting is
2580     <code>Script</code>. This causes Apache to use the interpreter pointed to
2581     by the shebang line (first line, starting with <code>#!</code>) in the
2582     script. On Win32 systems this line usually looks like:</p>
2583
2584     <example>
2585       #!C:/Perl/bin/perl.exe
2586     </example>
2587
2588     <p>or, if <code>perl</code> is in the <code>PATH</code>, simply:</p>
2589
2590     <example>
2591       #!perl
2592     </example>
2593
2594     <p>Setting <code>ScriptInterpreterSource Registry</code> will
2595     cause the Windows Registry tree <code>HKEY_CLASSES_ROOT</code> to be
2596     searched using the script file extension (e.g., <code>.pl</code>) as a
2597     search key. The command defined by the registry subkey
2598     <code>Shell\ExecCGI\Command</code> or, if it does not exist, by the subkey
2599     <code>Shell\Open\Command</code> is used to open the script file. If the
2600     registry keys cannot be found, Apache falls back to the behavior of the
2601     <code>Script</code> option.</p>
2602
2603     <note type="warning"><title>Security</title>
2604     <p>Be careful when using <code>ScriptInterpreterSource
2605     Registry</code> with <directive
2606     module="mod_alias">ScriptAlias</directive>'ed directories, because
2607     Apache will try to execute <strong>every</strong> file within this
2608     directory. The <code>Registry</code> setting may cause undesired
2609     program calls on files which are typically not executed. For
2610     example, the default open command on <code>.htm</code> files on
2611     most Windows systems will execute Microsoft Internet Explorer, so
2612     any HTTP request for an <code>.htm</code> file existing within the
2613     script directory would start the browser in the background on the
2614     server. This is a good way to crash your system within a minute or
2615     so.</p>
2616     </note>
2617
2618     <p>The option <code>Registry-Strict</code> which is new in Apache
2619     2.0 does the same thing as <code>Registry</code> but uses only the
2620     subkey <code>Shell\ExecCGI\Command</code>. The
2621     <code>ExecCGI</code> key is not a common one. It must be
2622     configured manually in the windows registry and hence prevents
2623     accidental program calls on your system.</p>
2624 </usage>
2625 </directivesynopsis>
2626
2627 <directivesynopsis>
2628 <name>ServerAdmin</name>
2629 <description>Email address that the server includes in error
2630 messages sent to the client</description>
2631 <syntax>ServerAdmin <var>email-address</var>|<var>URL</var></syntax>
2632 <contextlist><context>server config</context><context>virtual host</context>
2633 </contextlist>
2634
2635 <usage>
2636     <p>The <directive>ServerAdmin</directive> sets the contact address
2637     that the server includes in any error messages it returns to the
2638     client. If the <code>httpd</code> doesn't recognize the supplied argument
2639     as an URL, it
2640     assumes, that it's an <var>email-address</var> and prepends it with
2641     <code>mailto:</code> in hyperlink targets. However, it's recommended to
2642     actually use an email address, since there are a lot of CGI scripts that
2643     make that assumption. If you want to use an URL, it should point to another
2644     server under your control. Otherwise users may not be able to contact you in
2645     case of errors.</p>
2646
2647     <p>It may be worth setting up a dedicated address for this, e.g.</p>
2648
2649     <example>
2650       ServerAdmin www-admin@foo.example.com
2651     </example>
2652     <p>as users do not always mention that they are talking about the
2653     server!</p>
2654 </usage>
2655 </directivesynopsis>
2656
2657 <directivesynopsis>
2658 <name>ServerAlias</name>
2659 <description>Alternate names for a host used when matching requests
2660 to name-virtual hosts</description>
2661 <syntax>ServerAlias <var>hostname</var> [<var>hostname</var>] ...</syntax>
2662 <contextlist><context>virtual host</context></contextlist>
2663
2664 <usage>
2665     <p>The <directive>ServerAlias</directive> directive sets the
2666     alternate names for a host, for use with <a
2667     href="../vhosts/name-based.html">name-based virtual hosts</a>.</p>
2668
2669     <example>
2670       &lt;VirtualHost *&gt;<br />
2671       ServerName server.domain.com<br />
2672       ServerAlias server server2.domain.com server2<br />
2673       # ...<br />
2674       &lt;/VirtualHost&gt;
2675     </example>
2676 </usage>
2677 <seealso><a href="../vhosts/">Apache Virtual Host documentation</a></seealso>
2678 </directivesynopsis>
2679
2680 <directivesynopsis>
2681 <name>ServerName</name>
2682 <description>Hostname and port that the server uses to identify
2683 itself</description>
2684 <syntax>ServerName <var>fully-qualified-domain-name</var>[:<var>port</var>]</syntax>
2685 <contextlist><context>server config</context><context>virtual host</context>
2686 </contextlist>
2687 <compatibility>In version 2.0, this
2688      directive supersedes the functionality of the <directive>Port</directive>
2689      directive from version 1.3.</compatibility>
2690
2691 <usage>
2692     <p>The <directive>ServerName</directive> directive sets the hostname and
2693     port that the server uses to identify itself.  This is used when
2694     creating redirection URLs. For example, if the name of the
2695     machine hosting the web server is <code>simple.example.com</code>,
2696     but the machine also has the DNS alias <code>www.example.com</code>
2697     and you wish the web server to be so identified, the following
2698     directive should be used:</p>
2699
2700     <example>
2701       ServerName www.example.com:80
2702     </example>
2703
2704     <p>If no <directive>ServerName</directive> is specified, then the
2705     server attempts to deduce the hostname by performing a reverse
2706     lookup on the IP address. If no port is specified in the
2707     <directive>ServerName</directive>, then the server will use the port
2708     from the incoming
2709     request. For optimal reliability and predictability, you should
2710     specify an explicit hostname and port using the
2711     <directive>ServerName</directive> directive.</p>
2712
2713     <p>If you are using <a
2714     href="../vhosts/name-based.html">name-based virtual hosts</a>,
2715     the <directive>ServerName</directive> inside a
2716     <directive type="section" module="core">VirtualHost</directive>
2717     section specifies what hostname must appear in the request's
2718     <code>Host:</code> header to match this virtual host.</p>
2719
2720     <p>See the description of the
2721     <directive module="core">UseCanonicalName</directive> directive for
2722     settings which determine whether self-referential URL's (e.g., by the
2723     <module>mod_dir</module> module) will refer to the
2724     specified port, or to the port number given in the client's request.
2725     </p>
2726 </usage>
2727
2728 <seealso><a href="../dns-caveats.html">Issues Regarding DNS and
2729     Apache</a></seealso>
2730 <seealso><a href="../vhosts/">Apache virtual host
2731     documentation</a></seealso>
2732 <seealso><directive module="core">UseCanonicalName</directive></seealso>
2733 <seealso><directive module="core">NameVirtualHost</directive></seealso>
2734 <seealso><directive module="core">ServerAlias</directive></seealso>
2735 </directivesynopsis>
2736
2737 <directivesynopsis>
2738 <name>ServerPath</name>
2739 <description>Legacy URL pathname for a name-based virtual host that
2740 is accessed by an incompatible browser</description>
2741 <syntax>ServerPath <var>URL-path</var></syntax>
2742 <contextlist><context>virtual host</context></contextlist>
2743
2744 <usage>
2745     <p>The <directive>ServerPath</directive> directive sets the legacy
2746     URL pathname for a host, for use with <a
2747     href="../vhosts/">name-based virtual hosts</a>.</p>
2748 </usage>
2749 <seealso><a href="../vhosts/">Apache Virtual Host documentation</a></seealso>
2750 </directivesynopsis>
2751
2752 <directivesynopsis>
2753 <name>ServerRoot</name>
2754 <description>Base directory for the server installation</description>
2755 <syntax>ServerRoot <var>directory-path</var></syntax>
2756 <default>ServerRoot /usr/local/apache</default>
2757 <contextlist><context>server config</context></contextlist>
2758
2759 <usage>
2760     <p>The <directive>ServerRoot</directive> directive sets the
2761     directory in which the server lives. Typically it will contain the
2762     subdirectories <code>conf/</code> and <code>logs/</code>. Relative
2763     paths in other configuration directives (such as <directive
2764     module="core">Include</directive> or <directive
2765     module="mod_so">LoadModule</directive>, for example) are taken as 
2766     relative to this directory.</p>
2767
2768     <example><title>Example</title>
2769       ServerRoot /home/httpd
2770     </example>
2771
2772 </usage>
2773 <seealso><a href="../invoking.html">the <code>-d</code>
2774     option to <code>httpd</code></a></seealso>
2775 <seealso><a href="../misc/security_tips.html#serverroot">the
2776     security tips</a> for information on how to properly set
2777     permissions on the <directive>ServerRoot</directive></seealso>
2778 </directivesynopsis>
2779
2780 <directivesynopsis>
2781 <name>ServerSignature</name>
2782 <description>Configures the footer on server-generated documents</description>
2783 <syntax>ServerSignature On|Off|EMail</syntax>
2784 <default>ServerSignature Off</default>
2785 <contextlist><context>server config</context><context>virtual host</context>
2786 <context>directory</context><context>.htaccess</context>
2787 </contextlist>
2788 <override>All</override>
2789
2790 <usage>
2791     <p>The <directive>ServerSignature</directive> directive allows the
2792     configuration of a trailing footer line under server-generated
2793     documents (error messages, <module>mod_proxy</module> ftp directory
2794     listings, <module>mod_info</module> output, ...). The reason why you
2795     would want to enable such a footer line is that in a chain of proxies,
2796     the user often has no possibility to tell which of the chained servers
2797     actually produced a returned error message.</p>
2798
2799     <p>The <code>Off</code>
2800     setting, which is the default, suppresses the footer line (and is
2801     therefore compatible with the behavior of Apache-1.2 and
2802     below). The <code>On</code> setting simply adds a line with the
2803     server version number and <directive
2804     module="core">ServerName</directive> of the serving virtual host,
2805     and the <code>EMail</code> setting additionally creates a
2806     "mailto:" reference to the <directive
2807     module="core">ServerAdmin</directive> of the referenced
2808     document.</p>
2809
2810     <p>After version 2.0.44, the details of the server version number
2811     presented are controlled by the <directive
2812     module="core">ServerTokens</directive> directive.</p>
2813 </usage>
2814 <seealso><directive module="core">ServerTokens</directive></seealso>
2815 </directivesynopsis>
2816
2817 <directivesynopsis>
2818 <name>ServerTokens</name>
2819 <description>Configures the <code>Server</code> HTTP response
2820 header</description>
2821 <syntax>ServerTokens Major|Minor|Min[imal]|Prod[uctOnly]|OS|Full</syntax>
2822 <default>ServerTokens Full</default>
2823 <contextlist><context>server config</context></contextlist>
2824
2825 <usage>
2826     <p>This directive controls whether <code>Server</code> response
2827     header field which is sent back to clients includes a
2828     description of the generic OS-type of the server as well as
2829     information about compiled-in modules.</p>
2830
2831     <dl>
2832       <dt><code>ServerTokens Prod[uctOnly]</code></dt>
2833
2834       <dd>Server sends (<em>e.g.</em>): <code>Server:
2835       Apache</code></dd>
2836
2837       <dt><code>ServerTokens Major</code></dt>
2838
2839       <dd>Server sends (<em>e.g.</em>): <code>Server:
2840       Apache/2</code></dd>
2841
2842       <dt><code>ServerTokens Minor</code></dt>
2843
2844       <dd>Server sends (<em>e.g.</em>): <code>Server:
2845       Apache/2.0</code></dd>
2846
2847       <dt><code>ServerTokens Min[imal]</code></dt>
2848
2849       <dd>Server sends (<em>e.g.</em>): <code>Server:
2850       Apache/2.0.41</code></dd>
2851
2852       <dt><code>ServerTokens OS</code></dt>
2853
2854       <dd>Server sends (<em>e.g.</em>): <code>Server: Apache/2.0.41
2855       (Unix)</code></dd>
2856
2857       <dt><code>ServerTokens Full</code> (or not specified)</dt>
2858
2859       <dd>Server sends (<em>e.g.</em>): <code>Server: Apache/2.0.41
2860       (Unix) PHP/4.2.2 MyMod/1.2</code></dd>
2861     </dl>
2862
2863     <p>This setting applies to the entire server, and cannot be
2864     enabled or disabled on a virtualhost-by-virtualhost basis.</p>
2865
2866     <p>After version 2.0.44, this directive also controls the
2867     information presented by the <directive
2868     module="core">ServerSignature</directive> directive.</p>
2869 </usage>
2870 <seealso><directive module="core">ServerSignature</directive></seealso>
2871 </directivesynopsis>
2872
2873 <directivesynopsis>
2874 <name>SetHandler</name>
2875 <description>Forces all matching files to be processed by a
2876 handler</description>
2877 <syntax>SetHandler <var>handler-name</var>|None</syntax>
2878 <contextlist><context>server config</context><context>virtual host</context>
2879 <context>directory</context><context>.htaccess</context>
2880 </contextlist>
2881 <override>FileInfo</override>
2882 <compatibility>Moved into the core in Apache 2.0</compatibility>
2883
2884 <usage>
2885     <p>When placed into an <code>.htaccess</code> file or a
2886     <directive type="section" module="core">Directory</directive> or
2887     <directive type="section" module="core">Location</directive>
2888     section, this directive forces all matching files to be parsed
2889     through the <a href="../handler.html">handler</a> given by
2890     <var>handler-name</var>. For example, if you had a directory you
2891     wanted to be parsed entirely as imagemap rule files, regardless
2892     of extension, you might put the following into an
2893     <code>.htaccess</code> file in that directory:</p>
2894
2895     <example>
2896       SetHandler imap-file
2897     </example>
2898
2899     <p>Another example: if you wanted to have the server display a
2900     status report whenever a URL of
2901     <code>http://servername/status</code> was called, you might put
2902     the following into <code>httpd.conf</code>:</p>
2903
2904     <example>
2905       &lt;Location /status&gt;<br />
2906       <indent>
2907         SetHandler server-status<br />
2908       </indent>
2909       &lt;/Location&gt;
2910     </example>
2911
2912     <p>You can override an earlier defined <directive>SetHandler</directive>
2913     directive by using the value <code>None</code>.</p>
2914 </usage>
2915
2916 <seealso><directive module="mod_mime">AddHandler</directive></seealso>
2917
2918 </directivesynopsis>
2919
2920 <directivesynopsis>
2921 <name>SetInputFilter</name>
2922 <description>Sets the filters that will process client requests and POST
2923 input</description>
2924 <syntax>SetInputFilter <var>filter</var>[;<var>filter</var>...]</syntax>
2925 <contextlist><context>server config</context><context>virtual host</context>
2926 <context>directory</context><context>.htaccess</context>
2927 </contextlist>
2928 <override>FileInfo</override>
2929
2930 <usage>
2931     <p>The <directive>SetInputFilter</directive> directive sets the
2932     filter or filters which will process client requests and POST
2933     input when they are received by the server. This is in addition to
2934     any filters defined elsewhere, including the
2935     <directive module="mod_mime">AddInputFilter</directive>
2936     directive.</p>
2937
2938     <p>If more than one filter is specified, they must be separated
2939     by semicolons in the order in which they should process the
2940     content.</p>
2941 </usage>
2942 <seealso><a href="../filter.html">Filters</a> documentation</seealso>
2943 </directivesynopsis>
2944
2945 <directivesynopsis>
2946 <name>SetOutputFilter</name>
2947 <description>Sets the filters that will process responses from the
2948 server</description>
2949 <syntax>SetOutputFilter <var>filter</var>[;<var>filter</var>...]</syntax>
2950 <contextlist><context>server config</context><context>virtual host</context>
2951 <context>directory</context><context>.htaccess</context>
2952 </contextlist>
2953 <override>FileInfo</override>
2954
2955 <usage>
2956     <p>The <directive>SetOutputFilter</directive> directive sets the filters
2957     which will process responses from the server before they are
2958     sent to the client. This is in addition to any filters defined
2959     elsewhere, including the
2960     <directive module="mod_mime">AddOutputFilter</directive>
2961     directive.</p>
2962
2963     <p>For example, the following configuration will process all files
2964     in the <code>/www/data/</code> directory for server-side
2965     includes.</p>
2966
2967     <example>
2968       &lt;Directory /www/data/&gt;<br />
2969       <indent>
2970         SetOutputFilter INCLUDES<br />
2971       </indent>
2972       &lt;/Directory&gt;
2973     </example>
2974
2975     <p>If more than one filter is specified, they must be separated
2976     by semicolons in the order in which they should process the
2977     content.</p>
2978 </usage>
2979 <seealso><a href="../filter.html">Filters</a> documentation</seealso>
2980 </directivesynopsis>
2981
2982 <directivesynopsis>
2983 <name>TimeOut</name>
2984 <description>Amount of time the server will wait for
2985 certain events before failing a request</description>
2986 <syntax>TimeOut <var>seconds</var></syntax>
2987 <default>TimeOut 300</default>
2988 <contextlist><context>server config</context></contextlist>
2989
2990 <usage>
2991     <p>The <directive>TimeOut</directive> directive currently defines
2992     the amount of time Apache will wait for three things:</p>
2993
2994     <ol>
2995       <li>The total amount of time it takes to receive a GET
2996       request.</li>
2997
2998       <li>The amount of time between receipt of TCP packets on a
2999       POST or PUT request.</li>
3000
3001       <li>The amount of time between ACKs on transmissions of TCP
3002       packets in responses.</li>
3003     </ol>
3004
3005     <p>We plan on making these separately configurable at some point
3006     down the road. The timer used to default to 1200 before 1.2,
3007     but has been lowered to 300 which is still far more than
3008     necessary in most situations. It is not set any lower by
3009     default because there may still be odd places in the code where
3010     the timer is not reset when a packet is sent. </p>
3011 </usage>
3012 </directivesynopsis>
3013
3014 <directivesynopsis>
3015 <name>TraceEnable</name>
3016 <description>Name of the distributed configuration file</description>
3017 <syntax>TraceEnable <var>[on|off|extended]</var></syntax>
3018 <default>TraceEnable on</default>
3019 <contextlist><context>server config</context>
3020 </contextlist>
3021
3022 <usage>
3023     <p>This directive overrides the behavior of TRACE for both
3024     the core server and mod_proxy.  The default <code>TraceEnable 
3025     on</code> permits TRACE requests per RFC 2616, which disallows
3026     any request body to accompany the request.  <code>TraceEnable
3027     off</code> causes the core server and mod_proxy to return
3028     a 405 FORBIDDEN error to the client.</p>
3029
3030     <p>Finally, for testing and diagnostic purposes only, request
3031     bodies may be allowed using the non-compliant <code>TraceEnable 
3032     extended</code> directive.  The core (as an origin server) will
3033     restrict the request body to 64k (plus 8k for chunk headers if
3034     Transfer-Encoding: chunked is used).  The core will reflect the
3035     full headers and all chunk headers with the request body.  As a
3036     proxy server, the request body is not restricted to 64k.</p>
3037 </usage>
3038 </directivesynopsis>
3039
3040 <directivesynopsis>
3041 <name>UseCanonicalName</name>
3042 <description>Configures how the server determines its own name and
3043 port</description>
3044 <syntax>UseCanonicalName On|Off|DNS</syntax>
3045 <default>UseCanonicalName Off</default>
3046 <contextlist><context>server config</context><context>virtual host</context>
3047 <context>directory</context></contextlist>
3048
3049 <usage>
3050     <p>In many situations Apache must construct a <em>self-referential</em>
3051     URL -- that is, a URL that refers back to the same server. With
3052     <code>UseCanonicalName On</code> Apache will use the hostname and port
3053     specified in the <directive module="core">ServerName</directive>
3054     directive to construct the canonical name for the server. This name
3055     is used in all self-referential URLs, and for the values of
3056     <code>SERVER_NAME</code> and <code>SERVER_PORT</code> in CGIs.</p>
3057
3058     <p>With <code>UseCanonicalName Off</code> Apache will form
3059     self-referential URLs using the hostname and port supplied by
3060     the client if any are supplied (otherwise it will use the
3061     canonical name, as defined above). These values are the same
3062     that are used to implement <a
3063     href="../vhosts/name-based.html">name based virtual hosts</a>,
3064     and are available with the same clients. The CGI variables
3065     <code>SERVER_NAME</code> and <code>SERVER_PORT</code> will be
3066     constructed from the client supplied values as well.</p>
3067
3068     <p>An example where this may be useful is on an intranet server
3069     where you have users connecting to the machine using short
3070     names such as <code>www</code>. You'll notice that if the users
3071     type a shortname, and a URL which is a directory, such as
3072     <code>http://www/splat</code>, <em>without the trailing
3073     slash</em> then Apache will redirect them to
3074     <code>http://www.domain.com/splat/</code>. If you have
3075     authentication enabled, this will cause the user to have to
3076     authenticate twice (once for <code>www</code> and once again
3077     for <code>www.domain.com</code> -- see <a
3078     href="http://httpd.apache.org/docs/misc/FAQ.html#prompted-twice">the
3079     FAQ on this subject for more information</a>). But if
3080     <directive>UseCanonicalName</directive> is set <code>Off</code>, then
3081     Apache will redirect to <code>http://www/splat/</code>.</p>
3082
3083     <p>There is a third option, <code>UseCanonicalName DNS</code>,
3084     which is intended for use with mass IP-based virtual hosting to
3085     support ancient clients that do not provide a
3086     <code>Host:</code> header. With this option Apache does a
3087     reverse DNS lookup on the server IP address that the client
3088     connected to in order to work out self-referential URLs.</p>
3089
3090     <note type="warning"><title>Warning</title>
3091     <p>If CGIs make assumptions about the values of <code>SERVER_NAME</code>
3092     they may be broken by this option. The client is essentially free
3093     to give whatever value they want as a hostname. But if the CGI is
3094     only using <code>SERVER_NAME</code> to construct self-referential URLs
3095     then it should be just fine.</p>
3096     </note>
3097 </usage>
3098 <seealso><directive module="core">ServerName</directive></seealso>
3099 <seealso><directive module="mpm_common">Listen</directive></seealso>
3100 </directivesynopsis>
3101
3102 <directivesynopsis type="section">
3103 <name>VirtualHost</name>
3104 <description>Contains directives that apply only to a specific
3105 hostname or IP address</description>
3106 <syntax>&lt;VirtualHost
3107     <var>addr</var>[:<var>port</var>] [<var>addr</var>[:<var>port</var>]]
3108     ...&gt; ... &lt;/VirtualHost&gt;</syntax>
3109 <contextlist><context>server config</context></contextlist>
3110
3111 <usage>
3112     <p><directive type="section">VirtualHost</directive> and
3113     <code>&lt;/VirtualHost&gt;</code> are used to enclose a group of
3114     directives that will apply only to a particular virtual host. Any
3115     directive that is allowed in a virtual host context may be
3116     used. When the server receives a request for a document on a
3117     particular virtual host, it uses the configuration directives
3118     enclosed in the <directive type="section">VirtualHost</directive>
3119     section. <var>Addr</var> can be:</p>
3120
3121     <ul>
3122       <li>The IP address of the virtual host;</li>
3123
3124       <li>A fully qualified domain name for the IP address of the
3125       virtual host;</li>
3126
3127       <li>The character <code>*</code>, which is used only in combination with
3128       <code>NameVirtualHost *</code> to match all IP addresses; or</li>
3129
3130       <li>The string <code>_default_</code>, which is used only
3131       with IP virtual hosting to catch unmatched IP addresses.</li>
3132     </ul>
3133
3134     <example><title>Example</title>
3135       &lt;VirtualHost 10.1.2.3&gt;<br />
3136       <indent>
3137         ServerAdmin webmaster@host.foo.com<br />
3138         DocumentRoot /www/docs/host.foo.com<br />
3139         ServerName host.foo.com<br />
3140         ErrorLog logs/host.foo.com-error_log<br />
3141         TransferLog logs/host.foo.com-access_log<br />
3142       </indent>
3143       &lt;/VirtualHost&gt;
3144     </example>
3145
3146
3147     <p>IPv6 addresses must be specified in square brackets because
3148     the optional port number could not be determined otherwise.  An
3149     IPv6 example is shown below:</p>
3150
3151     <example>
3152       &lt;VirtualHost [fe80::a00:20ff:fea7:ccea]&gt;<br />
3153       <indent>
3154         ServerAdmin webmaster@host.example.com<br />
3155         DocumentRoot /www/docs/host.example.com<br />
3156         ServerName host.example.com<br />
3157         ErrorLog logs/host.example.com-error_log<br />
3158         TransferLog logs/host.example.com-access_log<br />
3159       </indent>
3160       &lt;/VirtualHost&gt;
3161     </example>
3162
3163     <p>Each Virtual Host must correspond to a different IP address,
3164     different port number or a different host name for the server,
3165     in the former case the server machine must be configured to
3166     accept IP packets for multiple addresses. (If the machine does
3167     not have multiple network interfaces, then this can be
3168     accomplished with the <code>ifconfig alias</code> command -- if
3169     your OS supports it).</p>
3170
3171     <note><title>Note</title>
3172     <p>The use of <directive type="section">VirtualHost</directive> does
3173     <strong>not</strong> affect what addresses Apache listens on. You
3174     may need to ensure that Apache is listening on the correct addresses
3175     using <directive module="mpm_common">Listen</directive>.</p>
3176     </note>
3177
3178     <p>When using IP-based virtual hosting, the special name
3179     <code>_default_</code> can be specified in
3180     which case this virtual host will match any IP address that is
3181     not explicitly listed in another virtual host. In the absence
3182     of any <code>_default_</code> virtual host the "main" server config,
3183     consisting of all those definitions outside any VirtualHost
3184     section, is used when no IP-match occurs.  (But note that any IP
3185     address that matches a <directive
3186     module="core">NameVirtualHost</directive> directive will use neither
3187     the "main" server config nor the <code>_default_</code> virtual host.
3188     See the <a href="../vhosts/name-based.html">name-based virtual hosting</a>
3189     documentation for further details.)</p>
3190
3191     <p>You can specify a <code>:port</code> to change the port that is
3192     matched. If unspecified then it defaults to the same port as the
3193     most recent <directive module="mpm_common">Listen</directive>
3194     statement of the main server. You may also specify <code>:*</code>
3195     to match all ports on that address. (This is recommended when used
3196     with <code>_default_</code>.)</p>
3197
3198     <note type="warning"><title>Security</title>
3199     <p>See the <a href="../misc/security_tips.html">security tips</a>
3200     document for details on why your security could be compromised if the
3201     directory where log files are stored is writable by anyone other
3202     than the user that starts the server.</p>
3203     </note>
3204 </usage>
3205 <seealso><a href="../vhosts/">Apache Virtual Host documentation</a></seealso>
3206 <seealso><a href="../dns-caveats.html">Issues Regarding DNS and
3207     Apache</a></seealso>
3208 <seealso><a href="../bind.html">Setting
3209     which addresses and ports Apache uses</a></seealso>
3210 <seealso><a href="../sections.html">How &lt;Directory&gt;, &lt;Location&gt;
3211     and &lt;Files&gt; sections work</a> for an explanation of how these
3212     different sections are combined when a request is received</seealso>
3213 </directivesynopsis>
3214
3215 </modulesynopsis>