github.com/krum110487/go-htaccess@v0.0.0-20240316004156-60641c8e7598/tests/data/apache_2_2_34/manual/mod/mod_auth_digest.html.en (about) 1 <?xml version="1.0" encoding="ISO-8859-1"?> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 3 <html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head> 4 <meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" /> 5 <!-- 6 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 7 This file is generated from xml source: DO NOT EDIT 8 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 9 --> 10 <title>mod_auth_digest - Apache HTTP Server Version 2.2</title> 11 <link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" /> 12 <link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" /> 13 <link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="../style/css/prettify.css" /> 14 <script src="../style/scripts/prettify.min.js" type="text/javascript"> 15 </script> 16 17 <link href="../images/favicon.ico" rel="shortcut icon" /><link href="http://httpd.apache.org/docs/current/mod/mod_auth_digest.html" rel="canonical" /></head> 18 <body> 19 <div id="page-header"> 20 <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p> 21 <p class="apache">Apache HTTP Server Version 2.2</p> 22 <img alt="" src="../images/feather.gif" /></div> 23 <div class="up"><a href="./"><img title="<-" alt="<-" src="../images/left.gif" /></a></div> 24 <div id="path"> 25 <a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">HTTP Server</a> > <a href="http://httpd.apache.org/docs/">Documentation</a> > <a href="../">Version 2.2</a> > <a href="./">Modules</a></div> 26 <div id="page-content"> 27 <div class="retired"><h4>Please note</h4> 28 <p> This document refers to a legacy release (<strong>2.2</strong>) of Apache httpd. The active release (<strong>2.4</strong>) is documented <a href="http://httpd.apache.org/docs/current">here</a>. If you have not already upgraded, please follow <a href="http://httpd.apache.org/docs/current/upgrading.html">this link</a> for more information.</p> 29 <p>You may follow <a href="http://httpd.apache.org/docs/current/mod/mod_auth_digest.html">this link</a> to go to the current version of this document.</p></div><div id="preamble"><h1>Apache Module mod_auth_digest</h1> 30 <div class="toplang"> 31 <p><span>Available Languages: </span><a href="../en/mod/mod_auth_digest.html" title="English"> en </a> | 32 <a href="../fr/mod/mod_auth_digest.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | 33 <a href="../ko/mod/mod_auth_digest.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p> 34 </div> 35 <table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>User authentication using MD5 36 Digest Authentication.</td></tr> 37 <tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr> 38 <tr><th><a href="module-dict.html#ModuleIdentifier">Module Identifier:</a></th><td>auth_digest_module</td></tr> 39 <tr><th><a href="module-dict.html#SourceFile">Source File:</a></th><td>mod_auth_digest.c</td></tr></table> 40 <h3>Summary</h3> 41 42 <p>This module implements HTTP Digest Authentication 43 (<a href="http://www.faqs.org/rfcs/rfc2617.html">RFC2617</a>), and 44 provides an alternative to <code class="module"><a href="../mod/mod_auth_basic.html">mod_auth_basic</a></code> where the 45 password is not transmitted as cleartext. However, this does 46 <strong>not</strong> lead to a significant security advantage over 47 basic authentication. On the other hand, the password storage on the 48 server is much less secure with digest authentication than with 49 basic authentication. Therefore, using basic auth and encrypting the 50 whole connection using <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> is a much better 51 alternative.</p> 52 </div> 53 <div id="quickview"><h3>Topics</h3> 54 <ul id="topics"> 55 <li><img alt="" src="../images/down.gif" /> <a href="#using">Using Digest Authentication</a></li> 56 </ul><h3 class="directives">Directives</h3> 57 <ul id="toc"> 58 <li><img alt="" src="../images/down.gif" /> <a href="#authdigestalgorithm">AuthDigestAlgorithm</a></li> 59 <li><img alt="" src="../images/down.gif" /> <a href="#authdigestdomain">AuthDigestDomain</a></li> 60 <li><img alt="" src="../images/down.gif" /> <a href="#authdigestnccheck">AuthDigestNcCheck</a></li> 61 <li><img alt="" src="../images/down.gif" /> <a href="#authdigestnonceformat">AuthDigestNonceFormat</a></li> 62 <li><img alt="" src="../images/down.gif" /> <a href="#authdigestnoncelifetime">AuthDigestNonceLifetime</a></li> 63 <li><img alt="" src="../images/down.gif" /> <a href="#authdigestprovider">AuthDigestProvider</a></li> 64 <li><img alt="" src="../images/down.gif" /> <a href="#authdigestqop">AuthDigestQop</a></li> 65 <li><img alt="" src="../images/down.gif" /> <a href="#authdigestshmemsize">AuthDigestShmemSize</a></li> 66 </ul> 67 <h3>See also</h3> 68 <ul class="seealso"> 69 <li><code class="directive"><a href="../mod/core.html#authname">AuthName</a></code></li> 70 <li><code class="directive"><a href="../mod/core.html#authtype">AuthType</a></code></li> 71 <li><code class="directive"><a href="../mod/core.html#require">Require</a></code></li> 72 <li><code class="directive"><a href="../mod/core.html#satisfy">Satisfy</a></code></li> 73 <li><a href="../howto/auth.html">Authentication howto</a></li> 74 </ul><ul class="seealso"><li><a href="#comments_section">Comments</a></li></ul></div> 75 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> 76 <div class="section"> 77 <h2><a name="using" id="using">Using Digest Authentication</a></h2> 78 79 <p>Using MD5 Digest authentication is very simple. Simply set 80 up authentication normally, using <code>AuthType Digest</code> and 81 <code class="directive"><a href="#authdigestprovider">AuthDigestProvider</a></code> 82 instead of the normal <code>AuthType Basic</code> and 83 <code class="directive"><a href="../mod/mod_auth_basic.html#authbasicprovider">AuthBasicProvider</a></code>. 84 Then add a <code class="directive"><a href="#authdigestdomain">AuthDigestDomain</a></code> directive containing at least the root 85 URI(s) for this protection space.</p> 86 87 <p>Appropriate user (text) files can be created using the 88 <code class="program"><a href="../programs/htdigest.html">htdigest</a></code> tool.</p> 89 90 <div class="example"><h3>Example:</h3><p><code> 91 <Location /private/><br /> 92 <span class="indent"> 93 AuthType Digest<br /> 94 AuthName "private area"<br /> 95 AuthDigestDomain /private/ http://mirror.my.dom/private2/<br /> 96 <br /> 97 AuthDigestProvider file<br /> 98 AuthUserFile /web/auth/.digest_pw<br /> 99 Require valid-user<br /> 100 </span> 101 </Location> 102 </code></p></div> 103 104 <div class="note"><h3>Note</h3> 105 <p>Digest authentication was intended to be more secure than basic 106 authentication, but no longer fulfills that design goal. A 107 man-in-the-middle attacker can trivially force the browser to downgrade 108 to basic authentication. And even a passive eavesdropper can brute-force 109 the password using today's graphics hardware, because the hashing 110 algorithm used by digest authentication is too fast. Another problem is 111 that the storage of the passwords on the server is insecure. The contents 112 of a stolen htdigest file can be used directly for digest authentication. 113 Therefore using <code class="module"><a href="../mod/mod_ssl.html">mod_ssl</a></code> to encrypt the whole connection is 114 strongly recommended.</p> 115 </div> 116 </div> 117 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> 118 <div class="directive-section"><h2><a name="AuthDigestAlgorithm" id="AuthDigestAlgorithm">AuthDigestAlgorithm</a> <a name="authdigestalgorithm" id="authdigestalgorithm">Directive</a></h2> 119 <table class="directive"> 120 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Selects the algorithm used to calculate the challenge and 121 response hashes in digest authentication</td></tr> 122 <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthDigestAlgorithm MD5|MD5-sess</code></td></tr> 123 <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>AuthDigestAlgorithm MD5</code></td></tr> 124 <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr> 125 <tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr> 126 <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr> 127 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_auth_digest</td></tr> 128 </table> 129 <p>The <code class="directive">AuthDigestAlgorithm</code> directive 130 selects the algorithm used to calculate the challenge and response 131 hashes.</p> 132 133 <div class="note"> 134 <code>MD5-sess</code> is not correctly implemented yet. 135 </div> 136 137 138 </div> 139 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> 140 <div class="directive-section"><h2><a name="AuthDigestDomain" id="AuthDigestDomain">AuthDigestDomain</a> <a name="authdigestdomain" id="authdigestdomain">Directive</a></h2> 141 <table class="directive"> 142 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>URIs that are in the same protection space for digest 143 authentication</td></tr> 144 <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthDigestDomain <var>URI</var> [<var>URI</var>] ...</code></td></tr> 145 <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr> 146 <tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr> 147 <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr> 148 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_auth_digest</td></tr> 149 </table> 150 <p>The <code class="directive">AuthDigestDomain</code> directive allows 151 you to specify one or more URIs which are in the same protection 152 space (<em>i.e.</em> use the same realm and username/password info). 153 The specified URIs are prefixes; the client will assume 154 that all URIs "below" these are also protected by the same 155 username/password. The URIs may be either absolute URIs (<em>i.e.</em> 156 including a scheme, host, port, etc.) or relative URIs.</p> 157 158 <p>This directive <em>should</em> always be specified and 159 contain at least the (set of) root URI(s) for this space. 160 Omitting to do so will cause the client to send the 161 Authorization header for <em>every request</em> sent to this 162 server. Apart from increasing the size of the request, it may 163 also have a detrimental effect on performance if <code class="directive"><a href="#authdigestnccheck">AuthDigestNcCheck</a></code> is on.</p> 164 165 <p>The URIs specified can also point to different servers, in 166 which case clients (which understand this) will then share 167 username/password info across multiple servers without 168 prompting the user each time. </p> 169 170 </div> 171 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> 172 <div class="directive-section"><h2><a name="AuthDigestNcCheck" id="AuthDigestNcCheck">AuthDigestNcCheck</a> <a name="authdigestnccheck" id="authdigestnccheck">Directive</a></h2> 173 <table class="directive"> 174 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Enables or disables checking of the nonce-count sent by the 175 server</td></tr> 176 <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthDigestNcCheck On|Off</code></td></tr> 177 <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>AuthDigestNcCheck Off</code></td></tr> 178 <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr> 179 <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr> 180 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_auth_digest</td></tr> 181 </table> 182 <div class="note"> 183 Not implemented yet. 184 </div> 185 186 187 </div> 188 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> 189 <div class="directive-section"><h2><a name="AuthDigestNonceFormat" id="AuthDigestNonceFormat">AuthDigestNonceFormat</a> <a name="authdigestnonceformat" id="authdigestnonceformat">Directive</a></h2> 190 <table class="directive"> 191 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Determines how the nonce is generated</td></tr> 192 <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthDigestNonceFormat <var>format</var></code></td></tr> 193 <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr> 194 <tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr> 195 <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr> 196 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_auth_digest</td></tr> 197 </table> 198 <div class="note">Not implemented yet.</div> 199 200 201 </div> 202 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> 203 <div class="directive-section"><h2><a name="AuthDigestNonceLifetime" id="AuthDigestNonceLifetime">AuthDigestNonceLifetime</a> <a name="authdigestnoncelifetime" id="authdigestnoncelifetime">Directive</a></h2> 204 <table class="directive"> 205 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>How long the server nonce is valid</td></tr> 206 <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthDigestNonceLifetime <var>seconds</var></code></td></tr> 207 <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>AuthDigestNonceLifetime 300</code></td></tr> 208 <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr> 209 <tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr> 210 <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr> 211 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_auth_digest</td></tr> 212 </table> 213 <p>The <code class="directive">AuthDigestNonceLifetime</code> directive 214 controls how long the server nonce is valid. When the client 215 contacts the server using an expired nonce the server will send 216 back a 401 with <code>stale=true</code>. If <var>seconds</var> is 217 greater than 0 then it specifies the amount of time for which the 218 nonce is valid; this should probably never be set to less than 10 219 seconds. If <var>seconds</var> is less than 0 then the nonce never 220 expires. 221 </p> 222 223 </div> 224 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> 225 <div class="directive-section"><h2><a name="AuthDigestProvider" id="AuthDigestProvider">AuthDigestProvider</a> <a name="authdigestprovider" id="authdigestprovider">Directive</a></h2> 226 <table class="directive"> 227 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Sets the authentication provider(s) for this location</td></tr> 228 <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthDigestProvider <var>provider-name</var> 229 [<var>provider-name</var>] ...</code></td></tr> 230 <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>AuthDigestProvider file</code></td></tr> 231 <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr> 232 <tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr> 233 <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr> 234 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_auth_digest</td></tr> 235 </table> 236 <p>The <code class="directive">AuthDigestProvider</code> directive sets 237 which provider is used to authenticate the users for this location. 238 The default <code>file</code> provider is implemented 239 by the <code class="module"><a href="../mod/mod_authn_file.html">mod_authn_file</a></code> module. Make sure 240 that the chosen provider module is present in the server.</p> 241 242 <p>See <code class="module"><a href="../mod/mod_authn_dbm.html">mod_authn_dbm</a></code>, <code class="module"><a href="../mod/mod_authn_file.html">mod_authn_file</a></code>, 243 and <code class="module"><a href="../mod/mod_authn_dbd.html">mod_authn_dbd</a></code> for providers.</p> 244 245 </div> 246 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> 247 <div class="directive-section"><h2><a name="AuthDigestQop" id="AuthDigestQop">AuthDigestQop</a> <a name="authdigestqop" id="authdigestqop">Directive</a></h2> 248 <table class="directive"> 249 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Determines the quality-of-protection to use in digest 250 authentication</td></tr> 251 <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthDigestQop none|auth|auth-int [auth|auth-int]</code></td></tr> 252 <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>AuthDigestQop auth</code></td></tr> 253 <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>directory, .htaccess</td></tr> 254 <tr><th><a href="directive-dict.html#Override">Override:</a></th><td>AuthConfig</td></tr> 255 <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr> 256 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_auth_digest</td></tr> 257 </table> 258 <p>The <code class="directive">AuthDigestQop</code> directive determines 259 the <dfn>quality-of-protection</dfn> to use. <code>auth</code> will 260 only do authentication (username/password); <code>auth-int</code> is 261 authentication plus integrity checking (an MD5 hash of the entity 262 is also computed and checked); <code>none</code> will cause the module 263 to use the old RFC-2069 digest algorithm (which does not include 264 integrity checking). Both <code>auth</code> and <code>auth-int</code> may 265 be specified, in which the case the browser will choose which of 266 these to use. <code>none</code> should only be used if the browser for 267 some reason does not like the challenge it receives otherwise.</p> 268 269 <div class="note"> 270 <code>auth-int</code> is not implemented yet. 271 </div> 272 273 </div> 274 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> 275 <div class="directive-section"><h2><a name="AuthDigestShmemSize" id="AuthDigestShmemSize">AuthDigestShmemSize</a> <a name="authdigestshmemsize" id="authdigestshmemsize">Directive</a></h2> 276 <table class="directive"> 277 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>The amount of shared memory to allocate for keeping track 278 of clients</td></tr> 279 <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>AuthDigestShmemSize <var>size</var></code></td></tr> 280 <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>AuthDigestShmemSize 1000</code></td></tr> 281 <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr> 282 <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr> 283 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_auth_digest</td></tr> 284 </table> 285 <p>The <code class="directive">AuthDigestShmemSize</code> directive defines 286 the amount of shared memory, that will be allocated at the server 287 startup for keeping track of clients. Note that the shared memory 288 segment cannot be set less than the space that is necessary for 289 tracking at least <em>one</em> client. This value is dependant on your 290 system. If you want to find out the exact value, you may simply 291 set <code class="directive">AuthDigestShmemSize</code> to the value of 292 <code>0</code> and read the error message after trying to start the 293 server.</p> 294 295 <p>The <var>size</var> is normally expressed in Bytes, but you 296 may let the number follow a <code>K</code> or an <code>M</code> to 297 express your value as KBytes or MBytes. For example, the following 298 directives are all equivalent:</p> 299 300 <div class="example"><p><code> 301 AuthDigestShmemSize 1048576<br /> 302 AuthDigestShmemSize 1024K<br /> 303 AuthDigestShmemSize 1M 304 </code></p></div> 305 306 </div> 307 </div> 308 <div class="bottomlang"> 309 <p><span>Available Languages: </span><a href="../en/mod/mod_auth_digest.html" title="English"> en </a> | 310 <a href="../fr/mod/mod_auth_digest.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | 311 <a href="../ko/mod/mod_auth_digest.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p> 312 </div><div class="top"><a href="#page-header"><img src="../images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Comments</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div> 313 <script type="text/javascript"><!--//--><![CDATA[//><!-- 314 var comments_shortname = 'httpd'; 315 var comments_identifier = 'http://httpd.apache.org/docs/2.2/mod/mod_auth_digest.html'; 316 (function(w, d) { 317 if (w.location.hostname.toLowerCase() == "httpd.apache.org") { 318 d.write('<div id="comments_thread"><\/div>'); 319 var s = d.createElement('script'); 320 s.type = 'text/javascript'; 321 s.async = true; 322 s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier; 323 (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s); 324 } 325 else { 326 d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>'); 327 } 328 })(window, document); 329 //--><!]]></script></div><div id="footer"> 330 <p class="apache">Copyright 2017 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p> 331 <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!-- 332 if (typeof(prettyPrint) !== 'undefined') { 333 prettyPrint(); 334 } 335 //--><!]]></script> 336 </body></html>