github.com/krum110487/go-htaccess@v0.0.0-20240316004156-60641c8e7598/tests/data/apache_2_2_34/manual/platform/ebcdic.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>The Apache EBCDIC Port - 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/platform/ebcdic.html" rel="canonical" /></head> 18 <body id="manual-page"><div id="page-header"> 19 <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> 20 <p class="apache">Apache HTTP Server Version 2.2</p> 21 <img alt="" src="../images/feather.gif" /></div> 22 <div class="up"><a href="./"><img title="<-" alt="<-" src="../images/left.gif" /></a></div> 23 <div id="path"> 24 <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="./">Platform Specific Notes</a></div><div id="page-content"><div class="retired"><h4>Please note</h4> 25 <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> 26 <p>You may follow <a href="http://httpd.apache.org/docs/current/platform/ebcdic.html">this link</a> to go to the current version of this document.</p></div><div id="preamble"><h1>The Apache EBCDIC Port</h1> 27 <div class="toplang"> 28 <p><span>Available Languages: </span><a href="../en/platform/ebcdic.html" title="English"> en </a> | 29 <a href="../ko/platform/ebcdic.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p> 30 </div> 31 32 33 <div class="warning"><strong>Warning:</strong> This document 34 has not been updated to take into account changes made in 35 the 2.0 version of the Apache HTTP Server. Some of the 36 information may still be relevant, but please use it with care. 37 </div> 38 39 </div> 40 <div id="quickview"><ul id="toc"><li><img alt="" src="../images/down.gif" /> <a href="#overview">Overview of the Apache EBCDIC Port</a></li> 41 <li><img alt="" src="../images/down.gif" /> <a href="#design">Design Goals</a></li> 42 <li><img alt="" src="../images/down.gif" /> <a href="#technical">Technical Solution</a></li> 43 <li><img alt="" src="../images/down.gif" /> <a href="#porting">Porting Notes</a></li> 44 <li><img alt="" src="../images/down.gif" /> <a href="#document">Document Storage Notes</a></li> 45 <li><img alt="" src="../images/down.gif" /> <a href="#modules">Apache Modules' Status</a></li> 46 <li><img alt="" src="../images/down.gif" /> <a href="#third-party">Third Party Modules' Status</a></li> 47 </ul><ul class="seealso"><li><a href="#comments_section">Comments</a></li></ul></div> 48 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> 49 <div class="section"> 50 <h2><a name="overview" id="overview">Overview of the Apache EBCDIC Port</a></h2> 51 52 53 54 <p>Version 1.3 of the Apache HTTP Server is the first version 55 which includes a port to a (non-ASCII) mainframe machine which 56 uses the EBCDIC character set as its native codeset.</p> 57 58 <p>(It is the SIEMENS family of mainframes running the <a href="http://www.siemens.de/servers/bs2osd/osdbc_us.htm">BS2000/OSD 59 operating system</a>. This mainframe OS nowadays features a 60 SVR4-derived POSIX subsystem).</p> 61 62 <p>The port was started initially to</p> 63 64 <ul> 65 <li>prove the feasibility of porting <a href="http://httpd.apache.org/">the Apache HTTP server</a> to 66 this platform</li> 67 68 <li>find a "worthy and capable" successor for the venerable 69 <a href="http://www.w3.org/Daemon/">CERN-3.0</a> daemon 70 (which was ported a couple of years ago), and to</li> 71 72 <li>prove that Apache's preforking process model can on this 73 platform easily outperform the accept-fork-serve model used 74 by CERN by a factor of 5 or more.</li> 75 </ul> 76 77 <p>This document serves as a rationale to describe some of the 78 design decisions of the port to this machine.</p> 79 80 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> 81 <div class="section"> 82 <h2><a name="design" id="design">Design Goals</a></h2> 83 84 85 86 <p>One objective of the EBCDIC port was to maintain enough 87 backwards compatibility with the (EBCDIC) CERN server to make 88 the transition to the new server attractive and easy. This 89 required the addition of a configurable method to define 90 whether a HTML document was stored in ASCII (the only format 91 accepted by the old server) or in EBCDIC (the native document 92 format in the POSIX subsystem, and therefore the only realistic 93 format in which the other POSIX tools like <code>grep</code> or 94 <code>sed</code> could operate on the documents). The current 95 solution to this is a "pseudo-MIME-format" which is intercepted 96 and interpreted by the Apache server (see below). Future versions 97 might solve the problem by defining an "ebcdic-handler" for all 98 documents which must be converted.</p> 99 100 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> 101 <div class="section"> 102 <h2><a name="technical" id="technical">Technical Solution</a></h2> 103 104 105 106 <p>Since all Apache input and output is based upon the BUFF 107 data type and its methods, the easiest solution was to add the 108 conversion to the BUFF handling routines. The conversion must 109 be settable at any time, so a BUFF flag was added which defines 110 whether a BUFF object has currently enabled conversion or not. 111 This flag is modified at several points in the HTTP 112 protocol:</p> 113 114 <ul> 115 <li><strong>set</strong> before a request is received 116 (because the request and the request header lines are always 117 in ASCII format)</li> 118 119 <li><strong>set/unset</strong> when the request body is 120 received - depending on the content type of the request body 121 (because the request body may contain ASCII text or a binary 122 file)</li> 123 124 <li><strong>set</strong> before a reply header is sent 125 (because the response header lines are always in ASCII 126 format)</li> 127 128 <li><strong>set/unset</strong> when the response body is sent 129 - depending on the content type of the response body (because 130 the response body may contain text or a binary file)</li> 131 </ul> 132 133 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> 134 <div class="section"> 135 <h2><a name="porting" id="porting">Porting Notes</a></h2> 136 137 138 139 <ol> 140 <li> 141 <p>The relevant changes in the source are <code>#ifdef</code>'ed 142 into two categories:</p> 143 144 <dl> 145 <dt><code><strong>#ifdef 146 CHARSET_EBCDIC</strong></code></dt> 147 148 <dd> 149 <p>Code which is needed for any EBCDIC based machine. 150 This includes character translations, differences in 151 contiguity of the two character sets, flags which 152 indicate which part of the HTTP protocol has to be 153 converted and which part doesn't <em>etc.</em></p> 154 </dd> 155 156 <dt><code><strong>#ifdef _OSD_POSIX</strong></code></dt> 157 158 <dd> 159 <p>Code which is needed for the SIEMENS BS2000/OSD 160 mainframe platform only. This deals with include file 161 differences and socket implementation topics which are 162 only required on the BS2000/OSD platform.</p> 163 </dd> 164 </dl> 165 </li> 166 167 <li> 168 <p>The possibility to translate between ASCII and EBCDIC at 169 the socket level (on BS2000 POSIX, there is a socket option 170 which supports this) was intentionally <em>not</em> chosen, 171 because the byte stream at the HTTP protocol level consists 172 of a mixture of protocol related strings and non-protocol 173 related raw file data. HTTP protocol strings are always 174 encoded in ASCII (the <code>GET</code> request, any Header: lines, 175 the chunking information <em>etc.</em>) whereas the file transfer 176 parts (<em>i.e.</em>, GIF images, CGI output <em>etc.</em>) 177 should usually be just "passed through" by the server. This 178 separation between "protocol string" and "raw data" is 179 reflected in the server code by functions like <code>bgets()</code> 180 or <code>rvputs()</code> for strings, and functions like 181 <code>bwrite()</code> for binary data. A global translation 182 of everything would therefore be inadequate.</p> 183 184 <p>(In the case of text files of course, provisions must be 185 made so that EBCDIC documents are always served in 186 ASCII)</p> 187 </li> 188 189 <li> 190 <p>This port therefore features a built-in protocol level 191 conversion for the server-internal strings (which the 192 compiler translated to EBCDIC strings) and thus for all 193 server-generated documents. The hard coded ASCII escapes 194 <code>\012</code> and <code>\015</code> which are ubiquitous 195 in the server code are an exception: they are already the binary 196 encoding of the ASCII <code>\n</code> and <code>\r</code> and 197 must not be converted to ASCII a second time. 198 This exception is only relevant for server-generated strings; 199 and <em>external</em> EBCDIC documents are not expected to 200 contain ASCII newline characters.</p> 201 </li> 202 203 <li> 204 <p>By examining the call hierarchy for the BUFF management 205 routines, I added an "ebcdic/ascii conversion layer" which 206 would be crossed on every puts/write/get/gets, and a 207 conversion flag which allowed enabling/disabling the 208 conversions on-the-fly. Usually, a document crosses this 209 layer twice from its origin source (a file or CGI output) to 210 its destination (the requesting client): <code>file -> 211 Apache</code>, and <code>Apache -> client</code>.</p> 212 213 <p>The server can now read the header lines of a CGI-script 214 output in EBCDIC format, and then find out that the remainder 215 of the script's output is in ASCII (like in the case of the 216 output of a WWW Counter program: the document body contains a 217 GIF image). All header processing is done in the native 218 EBCDIC format; the server then determines, based on the type 219 of document being served, whether the document body (except 220 for the chunking information, of course) is in ASCII already 221 or must be converted from EBCDIC.</p> 222 </li> 223 224 <li> 225 <p>For Text documents (MIME types text/plain, text/html 226 <em>etc.</em>), an implicit translation to ASCII can be 227 used, or (if the users prefer to store some documents in 228 raw ASCII form for faster serving, or because the files 229 reside on a NFS-mounted directory tree) can be served 230 without conversion.</p> 231 232 <p><strong>Example:</strong></p> 233 234 <p>to serve files with the suffix <code>.ahtml</code> as a 235 raw ASCII <code>text/html</code> document without implicit 236 conversion (and suffix <code>.ascii</code> as ASCII 237 <code>text/plain</code>), use the directives:</p> 238 239 <div class="example"><p><code> 240 AddType text/x-ascii-html .ahtml <br /> 241 AddType text/x-ascii-plain .ascii 242 </code></p></div> 243 244 <p>Similarly, any <code>text/foo</code> MIME type can be 245 served as "raw ASCII" by configuring a MIME type 246 "<code>text/x-ascii-foo</code>" for it using 247 <code>AddType</code>.</p> 248 </li> 249 250 <li> 251 <p>Non-text documents are always served "binary" without 252 conversion. This seems to be the most sensible choice for, 253 .<em>e.g.</em>, GIF/ZIP/AU file types. This of course 254 requires the user to copy them to the mainframe host using 255 the "<code>rcp -b</code>" binary switch.</p> 256 </li> 257 258 <li> 259 <p>Server parsed files are always assumed to be in native 260 (<em>i.e.</em>, EBCDIC) format as used on the machine, and 261 are converted after processing.</p> 262 </li> 263 264 <li> 265 <p>For CGI output, the CGI script determines whether a 266 conversion is needed or not: by setting the appropriate 267 Content-Type, text files can be converted, or GIF output can 268 be passed through unmodified. An example for the latter case 269 is the wwwcount program which we ported as well.</p> 270 </li> 271 272 </ol> 273 274 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> 275 <div class="section"> 276 <h2><a name="document" id="document">Document Storage Notes</a></h2> 277 278 279 280 <h3><a name="binary" id="binary">Binary Files</a></h3> 281 282 283 284 <p>All files with a <code>Content-Type:</code> which does not 285 start with <code>text/</code> are regarded as <em>binary 286 files</em> by the server and are not subject to any conversion. 287 Examples for binary files are GIF images, gzip-compressed files 288 and the like.</p> 289 290 <p>When exchanging binary files between the mainframe host and 291 a Unix machine or Windows PC, be sure to use the ftp "binary" 292 (<code>TYPE I</code>) command, or use the 293 <code>rcp -b</code> command from the mainframe host (the 294 <code>-b</code> switch is not supported in unix 295 <code>rcp</code>'s).</p> 296 297 298 299 <h3><a name="text" id="text">Text Documents</a></h3> 300 301 302 303 <p>The default assumption of the server is that Text Files 304 (<em>i.e.</em>, all files whose <code>Content-Type:</code> 305 starts with <code>text/</code>) are stored in the native 306 character set of the host, EBCDIC.</p> 307 308 309 310 <h3><a name="ssi" id="ssi">Server Side Included Documents</a></h3> 311 312 313 314 <p>SSI documents must currently be stored in EBCDIC only. 315 No provision is made to convert it from ASCII before 316 processing.</p> 317 318 319 320 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> 321 <div class="section"> 322 <h2><a name="modules" id="modules">Apache Modules' Status</a></h2> 323 324 325 326 <table class="bordered"> 327 <tr> 328 <th>Module</th> 329 <th>Status</th> 330 <th>Notes</th> 331 </tr> 332 333 <tr> 334 <td><code class="module"><a href="../mod/core.html">core</a></code></td> 335 <td class="centered">+</td> 336 <td /> 337 </tr> 338 339 <tr> 340 <td><code class="module">mod_access</code></td> 341 <td class="centered">+</td> 342 <td /> 343 </tr> 344 345 <tr> 346 <td><code class="module"><a href="../mod/mod_actions.html">mod_actions</a></code></td> 347 <td class="centered">+</td> 348 <td /> 349 </tr> 350 351 <tr> 352 <td><code class="module"><a href="../mod/mod_alias.html">mod_alias</a></code></td> 353 <td class="centered">+</td> 354 <td /> 355 </tr> 356 357 <tr> 358 <td><code class="module"><a href="../mod/mod_asis.html">mod_asis</a></code></td> 359 <td class="centered">+</td> 360 <td /> 361 </tr> 362 363 <tr> 364 <td><code class="module">mod_auth</code></td> 365 <td class="centered">+</td> 366 <td /> 367 </tr> 368 369 <tr> 370 <td><code class="module">mod_auth_anon</code></td> 371 <td class="centered">+</td> 372 <td /> 373 </tr> 374 375 <tr> 376 <td><code class="module">mod_auth_dbm</code></td> 377 <td class="centered">?</td> 378 <td>with own <code>libdb.a</code></td> 379 </tr> 380 381 <tr> 382 <td><code class="module"><a href="../mod/mod_autoindex.html">mod_autoindex</a></code></td> 383 <td class="centered">+</td> 384 <td /> 385 </tr> 386 387 <tr> 388 <td><code class="module"><a href="../mod/mod_cern_meta.html">mod_cern_meta</a></code></td> 389 <td class="centered">?</td> 390 <td /> 391 </tr> 392 393 <tr> 394 <td><code class="module"><a href="../mod/mod_cgi.html">mod_cgi</a></code></td> 395 <td class="centered">+</td> 396 <td /> 397 </tr> 398 399 <tr> 400 <td><code>mod_digest</code></td> 401 <td class="centered">+</td> 402 <td /> 403 </tr> 404 405 <tr> 406 <td><code class="module"><a href="../mod/mod_dir.html">mod_dir</a></code></td> 407 <td class="centered">+</td> 408 <td /> 409 </tr> 410 411 <tr> 412 <td><code class="module"><a href="../mod/mod_so.html">mod_so</a></code></td> 413 <td class="centered">-</td> 414 <td>no shared libs</td> 415 </tr> 416 417 <tr> 418 <td><code class="module"><a href="../mod/mod_env.html">mod_env</a></code></td> 419 <td class="centered">+</td> 420 <td /> 421 </tr> 422 423 <tr> 424 <td><code class="module"><a href="../mod/mod_example.html">mod_example</a></code></td> 425 <td class="centered">-</td> 426 <td>(test bed only)</td> 427 </tr> 428 429 <tr> 430 <td><code class="module"><a href="../mod/mod_expires.html">mod_expires</a></code></td> 431 <td class="centered">+</td> 432 <td /> 433 </tr> 434 435 <tr> 436 <td><code class="module"><a href="../mod/mod_headers.html">mod_headers</a></code></td> 437 <td class="centered">+</td> 438 <td /> 439 </tr> 440 441 <tr> 442 <td><code class="module"><a href="../mod/mod_imagemap.html">mod_imagemap</a></code></td> 443 <td class="centered">+</td> 444 <td /> 445 </tr> 446 447 <tr> 448 <td><code class="module"><a href="../mod/mod_include.html">mod_include</a></code></td> 449 <td class="centered">+</td> 450 <td /> 451 </tr> 452 453 <tr> 454 <td><code class="module"><a href="../mod/mod_info.html">mod_info</a></code></td> 455 <td class="centered">+</td> 456 <td /> 457 </tr> 458 459 <tr> 460 <td><code>mod_log_agent</code></td> 461 <td class="centered">+</td> 462 <td /> 463 </tr> 464 465 <tr> 466 <td><code>mod_log_config</code></td> 467 <td class="centered">+</td> 468 <td /> 469 </tr> 470 471 <tr> 472 <td><code class="module">mod_log_referer</code></td> 473 <td class="centered">+</td> 474 <td /> 475 </tr> 476 477 <tr> 478 <td><code class="module"><a href="../mod/mod_mime.html">mod_mime</a></code></td> 479 <td class="centered">+</td> 480 <td /> 481 </tr> 482 483 <tr> 484 <td><code class="module"><a href="../mod/mod_mime_magic.html">mod_mime_magic</a></code></td> 485 <td class="centered">?</td> 486 <td>not ported yet</td> 487 </tr> 488 489 <tr> 490 <td><code class="module"><a href="../mod/mod_negotiation.html">mod_negotiation</a></code></td> 491 <td class="centered">+</td> 492 <td /> 493 </tr> 494 495 <tr> 496 <td><code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code></td> 497 <td class="centered">+</td> 498 <td /> 499 </tr> 500 501 <tr> 502 <td><code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code></td> 503 <td class="centered">+</td> 504 <td>untested</td> 505 </tr> 506 507 <tr> 508 <td><code class="module"><a href="../mod/mod_setenvif.html">mod_setenvif</a></code></td> 509 <td class="centered">+</td> 510 <td /> 511 </tr> 512 513 <tr> 514 <td><code class="module"><a href="../mod/mod_speling.html">mod_speling</a></code></td> 515 <td class="centered">+</td> 516 <td /> 517 </tr> 518 519 <tr> 520 <td><code class="module"><a href="../mod/mod_status.html">mod_status</a></code></td> 521 <td class="centered">+</td> 522 <td /> 523 </tr> 524 525 <tr> 526 <td><code class="module"><a href="../mod/mod_unique_id.html">mod_unique_id</a></code></td> 527 <td class="centered">+</td> 528 <td /> 529 </tr> 530 531 <tr> 532 <td><code class="module"><a href="../mod/mod_userdir.html">mod_userdir</a></code></td> 533 <td class="centered">+</td> 534 <td /> 535 </tr> 536 537 <tr> 538 <td><code class="module"><a href="../mod/mod_usertrack.html">mod_usertrack</a></code></td> 539 <td class="centered">?</td> 540 <td>untested</td> 541 </tr> 542 </table> 543 544 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> 545 <div class="section"> 546 <h2><a name="third-party" id="third-party">Third Party Modules' Status</a></h2> 547 548 549 550 <table class="bordered"> 551 <tr> 552 <th>Module</th> 553 <th>Status</th> 554 <th>Notes</th> 555 </tr> 556 557 <tr> 558 <td><code><a href="https://tomcat.apache.org/connectors-doc-archive/jk2/">JK</a> (Formerly mod_jserv) 559 </code></td> 560 <td class="centered">-</td> 561 <td>JAVA still being ported.</td> 562 </tr> 563 564 <tr> 565 <td><code><a href="http://www.php.net/">mod_php3</a></code></td> 566 <td class="centered">+</td> 567 <td><code>mod_php3</code> runs fine, with LDAP and GD 568 and FreeType libraries.</td> 569 </tr> 570 571 <tr> 572 <td><code><a href="http://hpwww.ec-lyon.fr/~vincent/apache/mod_put.html">mod_put</a></code></td> 573 <td class="centered">?</td> 574 <td>untested</td> 575 </tr> 576 577 <tr> 578 <td><code><a href="ftp://hachiman.vidya.com/pub/apache/">mod_session</a></code></td> 579 <td class="centered">-</td> 580 <td>untested</td> 581 </tr> 582 </table> 583 584 </div></div> 585 <div class="bottomlang"> 586 <p><span>Available Languages: </span><a href="../en/platform/ebcdic.html" title="English"> en </a> | 587 <a href="../ko/platform/ebcdic.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p> 588 </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> 589 <script type="text/javascript"><!--//--><![CDATA[//><!-- 590 var comments_shortname = 'httpd'; 591 var comments_identifier = 'http://httpd.apache.org/docs/2.2/platform/ebcdic.html'; 592 (function(w, d) { 593 if (w.location.hostname.toLowerCase() == "httpd.apache.org") { 594 d.write('<div id="comments_thread"><\/div>'); 595 var s = d.createElement('script'); 596 s.type = 'text/javascript'; 597 s.async = true; 598 s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier; 599 (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s); 600 } 601 else { 602 d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>'); 603 } 604 })(window, document); 605 //--><!]]></script></div><div id="footer"> 606 <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> 607 <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[//><!-- 608 if (typeof(prettyPrint) !== 'undefined') { 609 prettyPrint(); 610 } 611 //--><!]]></script> 612 </body></html>