home *** CD-ROM | disk | FTP | other *** search
/ PC World 2003 May / PCWorld_2003-05_cd.bin / Komunik / apache / apache_2.0.45-win32-x86-no_ssl.msi / Data.Cab / F232674_handler.xml < prev    next >
Extensible Markup Language  |  2002-10-15  |  5KB  |  147 lines

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE manualpage SYSTEM "./style/manualpage.dtd">
  3. <?xml-stylesheet type="text/xsl" href="./style/manual.en.xsl"?>
  4.  
  5. <manualpage>
  6.   <relativepath href="."/>
  7.  
  8.   <title>Apache's Handler Use</title>
  9.  
  10.   <summary>
  11.     <p>This document describes the use of Apache's Handlers.</p>
  12.   </summary>
  13.  
  14.   <section id="definition">
  15.     <title>What is a Handler</title>
  16.     <related>
  17.       <modulelist>
  18.         <module>mod_actions</module>
  19.         <module>mod_asis</module>
  20.         <module>mod_cgi</module>
  21.         <module>mod_imap</module>
  22.         <module>mod_info</module>
  23.         <module>mod_mime</module>
  24.         <module>mod_negotiation</module>
  25.         <module>mod_status</module>
  26.      </modulelist>
  27.       <directivelist>
  28.         <directive module="mod_actions">Action</directive>
  29.         <directive module="mod_mime">AddHandler</directive>
  30.         <directive module="mod_mime">RemoveHandler</directive>
  31.         <directive module="core">SetHandler</directive>
  32.       </directivelist>
  33.     </related>
  34.     
  35.  
  36.     <p>A "handler" is an internal Apache representation of the
  37.     action to be performed when a file is called. Generally, files
  38.     have implicit handlers, based on the file type. Normally, all
  39.     files are simply served by the server, but certain file types
  40.     are "handled" separately.</p>
  41.  
  42.     <p>Apache 1.1 adds the ability to use handlers explicitly.
  43.     Based on either filename extensions or on location, handlers
  44.     can be specified without relation to file type. This is
  45.     advantageous both because it is a more elegant solution, and
  46.     because it also allows for both a type <strong>and</strong> a
  47.     handler to be associated with a file. (See also <a
  48.     href="mod/mod_mime.html#multipleext">Files with Multiple
  49.     Extensions</a>.)</p>
  50.  
  51.     <p>Handlers can either be built into the server or included in
  52.     a module, or they can be added with the <directive 
  53.     module="mod_actions">Action</directive> directive. The
  54.     built-in handlers in the standard distribution are as
  55.     follows:</p>
  56.  
  57.     <ul>
  58.       <li><strong>default-handler</strong>: Send the file using the
  59.       <code>default_handler()</code>, which is the handler used by
  60.       default to handle static content. (core)</li>
  61.  
  62.       <li><strong>send-as-is</strong>: Send file with HTTP headers
  63.       as is. (<module>mod_asis</module>)</li>
  64.  
  65.       <li><strong>cgi-script</strong>: Treat the file as a CGI
  66.       script. (<module>mod_cgi</module>)</li>
  67.  
  68.       <li><strong>imap-file</strong>: Parse as an imagemap rule
  69.       file. (<module>mod_imap</module>)</li>
  70.  
  71.       <li><strong>server-info</strong>: Get the server's
  72.       configuration information. (<module>mod_info</module>)</li>
  73.  
  74.       <li><strong>server-status</strong>: Get the server's status
  75.       report. (<module>mod_status</module>)</li>
  76.  
  77.       <li><strong>type-map</strong>: Parse as a type map file for
  78.       content negotiation. (<module>mod_negotiation</module>)</li>
  79.     </ul>
  80.   </section>
  81.   <section id="examples">
  82.     <title>Examples</title>
  83.  
  84.     <section id="example1">
  85.       <title>Modifying static content using a CGI script</title>
  86.  
  87.       <p>The following directives will cause requests for files with
  88.       the <code>html</code> extension to trigger the launch of the
  89.       <code>footer.pl</code> CGI script.</p>
  90.       
  91.       <example>
  92.         Action add-footer /cgi-bin/footer.pl<br/>
  93.         AddHandler add-footer .html
  94.       </example>
  95.  
  96.       <p>Then the CGI script is responsible for sending the
  97.       originally requested document (pointed to by the
  98.       <code>PATH_TRANSLATED</code> environment variable) and making
  99.       whatever modifications or additions are desired.</p>
  100.  
  101.     </section>
  102.     <section id="example2">
  103.       <title>Files with HTTP headers</title>
  104.  
  105.       <p>The following directives will enable the
  106.       <code>send-as-is</code> handler, which is used for files which
  107.       contain their own HTTP headers. All files in the
  108.       <code>/web/htdocs/asis/</code> directory will be processed by
  109.       the <code>send-as-is</code> handler, regardless of their
  110.       filename extensions.</p>
  111.  
  112.       <example>
  113.         <Directory /web/htdocs/asis><br/>
  114.         SetHandler send-as-is<br/>
  115.         </Directory>
  116.       </example>
  117.       
  118.     </section>
  119.   </section>
  120.   <section id="programmer">
  121.     <title>Programmer's Note</title>
  122.  
  123.     <p>In order to implement the handler features, an addition has
  124.     been made to the <a href="developer/API.html">Apache API</a> that
  125.     you may wish to make use of. Specifically, a new record has
  126.     been added to the <code>request_rec</code> structure:</p>
  127.  
  128.     <example>
  129.       char *handler
  130.     </example>
  131.  
  132.     <p>If you wish to have your module engage a handler, you need
  133.     only to set <code>r->handler</code> to the name of the
  134.     handler at any time prior to the <code>invoke_handler</code>
  135.     stage of the request. Handlers are implemented as they were
  136.     before, albeit using the handler name instead of a content
  137.     type. While it is not necessary, the naming convention for
  138.     handlers is to use a dash-separated word, with no slashes, so
  139.     as to not invade the media type name-space.</p>
  140.   </section>
  141. </manualpage>
  142.  
  143.  
  144.  
  145.  
  146.  
  147.