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 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 5 This file is generated from xml source: DO NOT EDIT 6 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 7 --> 8<title>mod_headers - Apache HTTP Server</title> 9<link href="/style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" /> 10<link href="/style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" /> 11<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" /> 12<script src="/style/scripts/prettify.js" type="text/javascript"> 13</script> 14 15<link href="/images/favicon.ico" rel="shortcut icon" /></head> 16<body> 17<div id="page-header"> 18<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> 19<p class="apache">Apache HTTP Server Version 2.2</p> 20<img alt="" src="/images/feather.gif" /></div> 21<div class="up"><a href="./"><img title="<-" alt="<-" src="/images/left.gif" /></a></div> 22<div id="path"> 23<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> 24<div id="page-content"> 25<div id="preamble"><h1>Apache Module mod_headers</h1> 26<div class="toplang"> 27<p><span>Available Languages: </span><a href="/en/mod/mod_headers.html" title="English"> en </a> | 28<a href="/ja/mod/mod_headers.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | 29<a href="/ko/mod/mod_headers.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p> 30</div> 31<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Customization of HTTP request and response 32headers</td></tr> 33<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr> 34<tr><th><a href="module-dict.html#ModuleIdentifier">Module�Identifier:</a></th><td>headers_module</td></tr> 35<tr><th><a href="module-dict.html#SourceFile">Source�File:</a></th><td>mod_headers.c</td></tr></table> 36<h3>Summary</h3> 37 38 <p>This module provides directives to control and modify HTTP 39 request and response headers. Headers can be merged, replaced 40 or removed.</p> 41</div> 42<div id="quickview"><h3 class="directives">Directives</h3> 43<ul id="toc"> 44<li><img alt="" src="/images/down.gif" /> <a href="#header">Header</a></li> 45<li><img alt="" src="/images/down.gif" /> <a href="#requestheader">RequestHeader</a></li> 46</ul> 47<h3>Topics</h3> 48<ul id="topics"> 49<li><img alt="" src="/images/down.gif" /> <a href="#order">Order of Processing</a></li> 50<li><img alt="" src="/images/down.gif" /> <a href="#early">Early and Late Processing</a></li> 51<li><img alt="" src="/images/down.gif" /> <a href="#examples">Examples</a></li> 52</ul><ul class="seealso"><li><a href="#comments_section">Comments</a></li></ul></div> 53<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 54<div class="section"> 55<h2><a name="order" id="order">Order of Processing</a></h2> 56 57 <p>The directives provided by <code class="module"><a href="/mod/mod_headers.html">mod_headers</a></code> can 58 occur almost anywhere within the server configuration, and can be 59 limited in scope by enclosing them in <a href="/sections.html">configuration sections</a>.</p> 60 61 <p>Order of processing is important and is affected both by the 62 order in the configuration file and by placement in <a href="/sections.html#mergin">configuration sections</a>. These 63 two directives have a different effect if reversed:</p> 64 65 <div class="example"><p><code> 66 RequestHeader append MirrorID "mirror 12"<br /> 67 RequestHeader unset MirrorID 68 </code></p></div> 69 70 <p>This way round, the <code>MirrorID</code> header is not set. If 71 reversed, the MirrorID header is set to "mirror 12".</p> 72</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 73<div class="section"> 74<h2><a name="early" id="early">Early and Late Processing</a></h2> 75 <p><code class="module"><a href="/mod/mod_headers.html">mod_headers</a></code> can be applied either early or late 76 in the request. The normal mode is late, when <em>Request</em> Headers are 77 set immediately before running the content generator and <em>Response</em> 78 Headers just as the response is sent down the wire. Always use 79 Late mode in an operational server.</p> 80 81 <p>Early mode is designed as a test/debugging aid for developers. 82 Directives defined using the <code>early</code> keyword are set 83 right at the beginning of processing the request. This means 84 they can be used to simulate different requests and set up test 85 cases, but it also means that headers may be changed at any time 86 by other modules before generating a Response.</p> 87 88 <p>Because early directives are processed before the request path's 89 configuration is traversed, early headers can only be set in a 90 main server or virtual host context. Early directives cannot depend 91 on a request path, so they will fail in contexts such as 92 <code><Directory></code> or <code><Location></code>.</p> 93</div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 94<div class="section"> 95<h2><a name="examples" id="examples">Examples</a></h2> 96 97 <ol> 98 <li> 99 Copy all request headers that begin with "TS" to the 100 response headers: 101 102 <div class="example"><p><code> 103 Header echo ^TS 104 </code></p></div> 105 </li> 106 107 <li> 108 Add a header, <code>MyHeader</code>, to the response including a 109 timestamp for when the request was received and how long it 110 took to begin serving the request. This header can be used by 111 the client to intuit load on the server or in isolating 112 bottlenecks between the client and the server. 113 114 <div class="example"><p><code> 115 Header set MyHeader "%D %t" 116 </code></p></div> 117 118 <p>results in this header being added to the response:</p> 119 120 <div class="example"><p><code> 121 MyHeader: D=3775428 t=991424704447256 122 </code></p></div> 123 </li> 124 125 <li> 126 Say hello to Joe 127 128 <div class="example"><p><code> 129 Header set MyHeader "Hello Joe. It took %D microseconds \<br /> 130 for Apache to serve this request." 131 </code></p></div> 132 133 <p>results in this header being added to the response:</p> 134 135 <div class="example"><p><code> 136 MyHeader: Hello Joe. It took D=3775428 microseconds for Apache 137 to serve this request. 138 </code></p></div> 139 </li> 140 141 <li> 142 Conditionally send <code>MyHeader</code> on the response if and 143 only if header <code>MyRequestHeader</code> is present on the request. 144 This is useful for constructing headers in response to some client 145 stimulus. Note that this example requires the services of the 146 <code class="module"><a href="/mod/mod_setenvif.html">mod_setenvif</a></code> module. 147 148 <div class="example"><p><code> 149 SetEnvIf MyRequestHeader myvalue HAVE_MyRequestHeader<br /> 150 Header set MyHeader "%D %t mytext" env=HAVE_MyRequestHeader 151 </code></p></div> 152 153 <p>If the header <code>MyRequestHeader: myvalue</code> is present on 154 the HTTP request, the response will contain the following header:</p> 155 156 <div class="example"><p><code> 157 MyHeader: D=3775428 t=991424704447256 mytext 158 </code></p></div> 159 </li> 160 161 <li> 162 Enable DAV to work with Apache running HTTP through SSL hardware 163 (<a href="http://svn.haxx.se/users/archive-2006-03/0549.shtml">problem 164 description</a>) by replacing <var>https:</var> with 165 <var>http:</var> in the <var>Destination</var> header: 166 167 <div class="example"><p><code> 168 RequestHeader edit Destination ^https: http: early 169 </code></p></div> 170 </li> 171 172 <li> 173 Set the same header value under multiple non-exclusive conditions, 174 but do not duplicate the value in the final header. 175 If all of the following conditions applied to a request (i.e., 176 if the <code>CGI</code>, <code>NO_CACHE</code> and 177 <code>NO_STORE</code> environment variables all existed for the 178 request): 179 180 <div class="example"><p><code> 181 Header merge Cache-Control no-cache env=CGI<br /> 182 Header merge Cache-Control no-cache env=NO_CACHE<br /> 183 Header merge Cache-Control no-store env=NO_STORE 184 </code></p></div> 185 186 <p>then the response would contain the following header:</p> 187 188 <div class="example"><p><code> 189 Cache-Control: no-cache, no-store 190 </code></p></div> 191 192 <p>If <code>append</code> was used instead of <code>merge</code>, 193 then the response would contain the following header:</p> 194 195 <div class="example"><p><code> 196 Cache-Control: no-cache, no-cache, no-store 197 </code></p></div> 198 </li> 199 </ol> 200</div> 201<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 202<div class="directive-section"><h2><a name="Header" id="Header">Header</a> <a name="header" id="header">Directive</a></h2> 203<table class="directive"> 204<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Configure HTTP response headers</td></tr> 205<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>Header [<var>condition</var>] set|append|merge|add|unset|echo|edit 206<var>header</var> [<var>value</var>] [<var>replacement</var>] 207[early|env=[!]<var>variable</var>]</code></td></tr> 208<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr> 209<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>FileInfo</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_headers</td></tr> 212<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>The <code>merge</code> argument is available in version 2132.2.9 and later. The <code>edit</code> argument is available in version 2142.2.4 and later.</td></tr> 215</table> 216 <p>This directive can replace, merge or remove HTTP response 217 headers. The header is modified just after the content handler 218 and output filters are run, allowing outgoing headers to be 219 modified.</p> 220 221 <p> The optional <var>condition</var> argument determines which internal 222 table of responses headers this directive will operate against. Other 223 components of the server may have stored their response headers in either 224 the table that corresponds to <code>onsuccess</code> or the table that 225 corresponds to <code>always</code>. "Always" in this context refers to 226 whether headers you add will be sent during both a successful and unsucessful 227 response, but if your action is a function of an existing header, you 228 will have to read on for further complications.</p> 229 230 <p> The default value of <code>onsuccess</code> may need to be changed to 231 <code>always</code> under the circumstances similar to those listed below. 232 Note also that repeating this directive with both conditions makes sense in 233 some scenarios because <code>always</code> is not a superset of 234 <code>onsuccess</code> with respect to existing headers:</p> 235 236 <ul> 237 <li> You're adding a header to a non-success (non-2xx) response, such 238 as a redirect, in which case only the table corresponding to 239 <code>always</code> is used in the ultimate response.</li> 240 <li> You're modifying or removing a header generated by a CGI script, 241 in which case the CGI scripts are in the table corresponding to 242 <code>always</code> and not in the default table.</li> 243 <li> You're modifying or removing a header generated by some piece of 244 the server but that header is not being found by the default 245 <code>onsuccess</code> condition.</li> 246 </ul> 247 248 <p>The action it performs is determined by the first 249 argument (second argument if a <var>condition</var> is specified). 250 This can be one of the following values:</p> 251 252 <dl> 253 <dt><code>set</code></dt> 254 <dd>The response header is set, replacing any previous header 255 with this name. The <var>value</var> may be a format string.</dd> 256 257 <dt><code>append</code></dt> 258 <dd>The response header is appended to any existing header of 259 the same name. When a new value is merged onto an existing 260 header it is separated from the existing header with a comma. 261 This is the HTTP standard way of giving a header multiple values.</dd> 262 263 <dt><code>merge</code></dt> 264 <dd>The response header is appended to any existing header of 265 the same name, unless the value to be appended already appears in the 266 header's comma-delimited list of values. When a new value is merged onto 267 an existing header it is separated from the existing header with a comma. 268 This is the HTTP standard way of giving a header multiple values. 269 Values are compared in a case sensitive manner, and after 270 all format specifiers have been processed. Values in double quotes 271 are considered different from otherwise identical unquoted values. 272 <em>Available in version 2.2.9 and later.</em></dd> 273 274 <dt><code>add</code></dt> 275 <dd>The response header is added to the existing set of headers, 276 even if this header already exists. This can result in two 277 (or more) headers having the same name. This can lead to 278 unforeseen consequences, and in general <code>set</code>, 279 <code>append</code> or <code>merge</code> should be used instead.</dd> 280 281 <dt><code>unset</code></dt> 282 <dd>The response header of this name is removed, if it exists. 283 If there are multiple headers of the same name, all will be 284 removed. <var>value</var> must be omitted.</dd> 285 286 <dt><code>echo</code></dt> 287 <dd>Request headers with this name are echoed back in the 288 response headers. <var>header</var> may be a 289 <a class="glossarylink" href="/glossary.html#regex" title="see glossary">regular expression</a>. 290 <var>value</var> must be omitted.</dd> 291 292 <dt><code>edit</code></dt> 293 <dd>If this response header exists, its value is transformed 294 according to a <a class="glossarylink" href="/glossary.html#regex" title="see glossary">regular expression</a> 295 search-and-replace. The <var>value</var> argument is 296 a <a class="glossarylink" href="/glossary.html#regex" title="see glossary">regular expression</a>, and 297 the <var>replacement</var> is a replacement string, which may 298 contain backreferences. <em>Available in version 2.2.4 and 299 later.</em></dd> 300 </dl> 301 302 <p>This argument is followed by a <var>header</var> name, which 303 can include the final colon, but it is not required. Case is 304 ignored for <code>set</code>, <code>append</code>, <code>merge</code>, 305 <code>add</code>, <code>unset</code> and <code>edit</code>. 306 The <var>header</var> name for <code>echo</code> 307 is case sensitive and may be a <a class="glossarylink" href="/glossary.html#regex" title="see glossary">regular 308 expression</a>.</p> 309 310 <p>For <code>set</code>, <code>append</code>, <code>merge</code> and 311 <code>add</code> a <var>value</var> is specified as the next argument. 312 If <var>value</var> 313 contains spaces, it should be surrounded by double quotes. 314 <var>value</var> may be a character string, a string containing format 315 specifiers or a combination of both. The following format specifiers 316 are supported in <var>value</var>:</p> 317 318 <table class="bordered"><tr class="header"><th>Format</th><th>Description</th></tr> 319<tr><td><code>%%</code></td> 320 <td>The percent sign</td></tr> 321<tr class="odd"><td><code>%t</code></td> 322 <td>The time the request was received in Universal Coordinated Time 323 since the epoch (Jan. 1, 1970) measured in microseconds. The value 324 is preceded by <code>t=</code>.</td></tr> 325<tr><td><code>%D</code></td> 326 <td>The time from when the request was received to the time the 327 headers are sent on the wire. This is a measure of the duration 328 of the request. The value is preceded by <code>D=</code>. 329 The value is measured in microseconds.</td></tr> 330<tr class="odd"><td><code>%{FOOBAR}e</code></td> 331 <td>The contents of the <a href="/env.html">environment 332 variable</a> <code>FOOBAR</code>.</td></tr> 333<tr><td><code>%{FOOBAR}s</code></td> 334 <td>The contents of the <a href="mod_ssl.html#envvars">SSL environment 335 variable</a> <code>FOOBAR</code>, if <code class="module"><a href="/mod/mod_ssl.html">mod_ssl</a></code> is enabled.</td></tr> 336</table> 337 338 <div class="note"><h3>Note</h3> 339 <p>The <code>%s</code> format specifier is only available in 340 Apache 2.1 and later; it can be used instead of <code>%e</code> 341 to avoid the overhead of enabling <code>SSLOptions 342 +StdEnvVars</code>. If <code>SSLOptions +StdEnvVars</code> must 343 be enabled anyway for some other reason, <code>%e</code> will be 344 more efficient than <code>%s</code>.</p> 345 </div> 346 347 <p>For <code>edit</code> there is both a <var>value</var> argument 348 which is a <a class="glossarylink" href="/glossary.html#regex" title="see glossary">regular expression</a>, 349 and an additional <var>replacement</var> string.</p> 350 351 <p>The <code class="directive">Header</code> directive may be followed by an 352 an additional argument, which may be used to specify conditions under 353 which the action will be taken, or may be the keyword <code>early</code> 354 to specify <a href="#early">early processing</a>. If the 355 <a href="/env.html">environment variable</a> specified in the 356 <code>env=<var>...</var></code> argument exists (or if the environment 357 variable does not exist and <code>env=!<var>...</var></code> is specified) 358 then the action specified by the <code class="directive">Header</code> directive 359 will take effect. Otherwise, the directive will have no effect 360 on the request.</p> 361 362 <p>Except in <a href="#early">early</a> mode, the 363 <code class="directive">Header</code> directives are processed just 364 before the response is sent to the network. These means that it is 365 possible to set and/or override most headers, except for those headers 366 added by the header filter.</p> 367 368</div> 369<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 370<div class="directive-section"><h2><a name="RequestHeader" id="RequestHeader">RequestHeader</a> <a name="requestheader" id="requestheader">Directive</a></h2> 371<table class="directive"> 372<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Configure HTTP request headers</td></tr> 373<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>RequestHeader set|append|merge|add|unset|edit <var>header</var> 374[<var>value</var>] [<var>replacement</var>] [early|env=[!]<var>variable</var>]</code></td></tr> 375<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr> 376<tr><th><a href="directive-dict.html#Override">Override:</a></th><td>FileInfo</td></tr> 377<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr> 378<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_headers</td></tr> 379<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>The <code>merge</code> argument is available in version 3802.2.9 and later. The <code>edit</code> argument is available in version 3812.2.4 and later.</td></tr> 382</table> 383 <p>This directive can replace, merge, change or remove HTTP request 384 headers. The header is modified just before the content handler 385 is run, allowing incoming headers to be modified. The action it 386 performs is determined by the first argument. This can be one 387 of the following values:</p> 388 389 <dl> 390 <dt><code>set</code></dt> 391 <dd>The request header is set, replacing any previous header 392 with this name</dd> 393 394 <dt><code>append</code></dt> 395 <dd>The request header is appended to any existing header of the 396 same name. When a new value is merged onto an existing header 397 it is separated from the existing header with a comma. This 398 is the HTTP standard way of giving a header multiple 399 values.</dd> 400 401 <dt><code>merge</code></dt> 402 <dd>The request header is appended to any existing header of 403 the same name, unless the value to be appended already appears in the 404 existing header's comma-delimited list of values. When a new value is 405 merged onto an existing header it is separated from the existing header 406 with a comma. This is the HTTP standard way of giving a header multiple 407 values. Values are compared in a case sensitive manner, and after 408 all format specifiers have been processed. Values in double quotes 409 are considered different from otherwise identical unquoted values. 410 <em>Available in version 2.2.9 and later.</em></dd> 411 412 <dt><code>add</code></dt> 413 <dd>The request header is added to the existing set of headers, 414 even if this header already exists. This can result in two 415 (or more) headers having the same name. This can lead to 416 unforeseen consequences, and in general <code>set</code>, 417 <code>append</code> or <code>merge</code> should be used instead.</dd> 418 419 <dt><code>unset</code></dt> 420 <dd>The request header of this name is removed, if it exists. If 421 there are multiple headers of the same name, all will be removed. 422 <var>value</var> must be omitted.</dd> 423 424 <dt><code>edit</code></dt> 425 <dd>If this request header exists, its value is transformed 426 according to a <a class="glossarylink" href="/glossary.html#regex" title="see glossary">regular expression</a> 427 search-and-replace. The <var>value</var> argument is 428 a <a class="glossarylink" href="/glossary.html#regex" title="see glossary">regular expression</a>, and 429 the <var>replacement</var> is a replacement string, which may 430 contain backreferences. <em>Available in version 2.2.4 and 431 later</em>.</dd> 432 </dl> 433 434 <p>This argument is followed by a header name, which can 435 include the final colon, but it is not required. Case is 436 ignored. For <code>set</code>, <code>append</code>, <code>merge</code> and 437 <code>add</code> a <var>value</var> is given as the third argument. If a 438 <var>value</var> contains spaces, it should be surrounded by double 439 quotes. For <code>unset</code>, no <var>value</var> should be given. 440 <var>value</var> may be a character string, a string containing format 441 specifiers or a combination of both. The supported format specifiers 442 are the same as for the <code class="directive"><a href="#header">Header</a></code>, 443 please have a look there for details. For <code>edit</code> both 444 a <var>value</var> and a <var>replacement</var> are required, and are 445 a <a class="glossarylink" href="/glossary.html#regex" title="see glossary">regular expression</a> and a 446 replacement string respectively.</p> 447 448 <p>The <code class="directive">RequestHeader</code> directive may be followed by 449 an additional argument, which may be used to specify conditions under 450 which the action will be taken, or may be the keyword <code>early</code> 451 to specify <a href="#early">early processing</a>. If the 452 <a href="/env.html">environment 453 variable</a> specified in the <code>env=<var>...</var></code> argument 454 exists (or if the environment variable does not exist and 455 <code>env=!<var>...</var></code> is specified) then the action specified 456 by the <code class="directive">RequestHeader</code> directive will take effect. 457 Otherwise, the directive will have no effect on the request.</p> 458 459 <p>Except in <a href="#early">early</a> mode, the 460 <code class="directive">RequestHeader</code> directive is processed 461 just before the request is run by its handler in the fixup phase. 462 This should allow headers generated by the browser, or by Apache 463 input filters to be overridden or modified.</p> 464 465</div> 466</div> 467<div class="bottomlang"> 468<p><span>Available Languages: </span><a href="/en/mod/mod_headers.html" title="English"> en </a> | 469<a href="/ja/mod/mod_headers.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | 470<a href="/ko/mod/mod_headers.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p> 471</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> 472<script type="text/javascript"><!--//--><![CDATA[//><!-- 473var comments_shortname = 'httpd'; 474var comments_identifier = 'http://httpd.apache.org/docs/2.2/mod/mod_headers.html'; 475(function(w, d) { 476 if (w.location.hostname.toLowerCase() == "httpd.apache.org") { 477 d.write('<div id="comments_thread"><\/div>'); 478 var s = d.createElement('script'); 479 s.type = 'text/javascript'; 480 s.async = true; 481 s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier; 482 (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s); 483 } 484 else { 485 d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>'); 486 } 487})(window, document); 488//--><!]]></script></div><div id="footer"> 489<p class="apache">Copyright 2013 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> 490<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[//><!-- 491if (typeof(prettyPrint) !== 'undefined') { 492 prettyPrint(); 493} 494//--><!]]></script> 495</body></html>