| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" |
| "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
| |
| <html xmlns="http://www.w3.org/1999/xhtml"> |
| <head> |
| <meta name="generator" content="HTML Tidy, see www.w3.org" /> |
| |
| <title>Apache's Handler Use</title> |
| </head> |
| <!-- Background white, links blue (unvisited), navy (visited), red (active) --> |
| |
| <body bgcolor="#FFFFFF" text="#000000" link="#0000FF" |
| vlink="#000080" alink="#FF0000"> |
| <!--#include virtual="header.html" --> |
| |
| <h1 align="CENTER">Apache's Handler Use</h1> |
| |
| <ul> |
| <li><a href="#definition">What is a Handler</a></li> |
| |
| <li><a href="#examples">Examples</a></li> |
| |
| <li><a href="#programmer">Programmer's Note</a></li> |
| </ul> |
| <hr /> |
| |
| <h2><a id="definition" name="definition">What is a |
| Handler</a></h2> |
| |
| <table border="1"> |
| <tr> |
| <td valign="top"><strong>Related Modules</strong><br /> |
| <br /> |
| <a href="mod/mod_actions.html">mod_actions</a><br /> |
| <a href="mod/mod_asis.html">mod_asis</a><br /> |
| <a href="mod/mod_cgi.html">mod_cgi</a><br /> |
| <a href="mod/mod_imap.html">mod_imap</a><br /> |
| <a href="mod/mod_info.html">mod_info</a><br /> |
| <a href="mod/mod_mime.html">mod_mime</a><br /> |
| <a |
| href="mod/mod_negotiation.html">mod_negotiation</a><br /> |
| <a href="mod/mod_status.html">mod_status</a><br /> |
| </td> |
| |
| <td valign="top"><strong>Related Directives</strong><br /> |
| <br /> |
| <a href="mod/mod_actions.html#action">Action</a><br /> |
| <a |
| href="mod/mod_mime.html#addhandler">AddHandler</a><br /> |
| <a |
| href="mod/mod_mime.html#removehandler">RemoveHandler</a><br /> |
| <a |
| href="mod/mod_mime.html#sethandler">SetHandler</a><br /> |
| </td> |
| </tr> |
| </table> |
| |
| <p>A "handler" is an internal Apache representation of the |
| action to be performed when a file is called. Generally, files |
| have implicit handlers, based on the file type. Normally, all |
| files are simply served by the server, but certain file types |
| are "handled" separately.</p> |
| |
| <p>Apache 1.1 adds the ability to use handlers explicitly. |
| Based on either filename extensions or on location, handlers |
| can be specified without relation to file type. This is |
| advantageous both because it is a more elegant solution, and |
| because it also allows for both a type <strong>and</strong> a |
| handler to be associated with a file. (See also <a |
| href="mod/mod_mime.html#multipleext">Files with Multiple |
| Extensions</a>.)</p> |
| |
| <p>Handlers can either be built into the server or included in |
| a module, or they can be added with the <a |
| href="mod/mod_actions.html#action">Action</a> directive. The |
| built-in handlers in the standard distribution are as |
| follows:</p> |
| |
| <ul> |
| <li><strong>default-handler</strong>: Send the file using the |
| <code>default_handler()</code>, which is the handler used by |
| default to handle static content. (core)</li> |
| |
| <li><strong>send-as-is</strong>: Send file with HTTP headers |
| as is. (<a href="mod/mod_asis.html">mod_asis</a>)</li> |
| |
| <li><strong>cgi-script</strong>: Treat the file as a CGI |
| script. (<a href="mod/mod_cgi.html">mod_cgi</a>)</li> |
| |
| <li><strong>imap-file</strong>: Parse as an imagemap rule |
| file. (<a href="mod/mod_imap.html">mod_imap</a>)</li> |
| |
| <li><strong>server-info</strong>: Get the server's |
| configuration information. (<a |
| href="mod/mod_info.html">mod_info</a>)</li> |
| |
| <li><strong>server-status</strong>: Get the server's status |
| report. (<a href="mod/mod_status.html">mod_status</a>)</li> |
| |
| <li><strong>type-map</strong>: Parse as a type map file for |
| content negotiation. (<a |
| href="mod/mod_negotiation.html">mod_negotiation</a>)</li> |
| </ul> |
| <hr /> |
| |
| <h2><a id="examples" name="examples">Examples</a></h2> |
| |
| <h3>Modifying static content using a CGI script</h3> |
| |
| <p>The following directives will cause requests for files with |
| the <code>html</code> extension to trigger the launch of the |
| <code>footer.pl</code> CGI script.</p> |
| <pre> |
| Action add-footer /cgi-bin/footer.pl |
| AddHandler add-footer .html |
| </pre> |
| |
| <p>Then the CGI script is responsible for sending the |
| originally requested document (pointed to by the |
| <code>PATH_TRANSLATED</code> environment variable) and making |
| whatever modifications or additions are desired.</p> |
| |
| <h3>Files with HTTP headers</h3> |
| |
| <p>The following directives will enable the |
| <code>send-as-is</code> handler, which is used for files which |
| contain their own HTTP headers. All files in the |
| <code>/web/htdocs/asis/</code> directory will be processed by |
| the <code>send-as-is</code> handler, regardless of their |
| filename extensions.</p> |
| <pre> |
| <Directory /web/htdocs/asis> |
| SetHandler send-as-is |
| </Directory> |
| </pre> |
| <hr /> |
| |
| <h2><a id="programmer" name="programmer">Programmer's |
| Note</a></h2> |
| |
| <p>In order to implement the handler features, an addition has |
| been made to the <a href="misc/API.html">Apache API</a> that |
| you may wish to make use of. Specifically, a new record has |
| been added to the <code>request_rec</code> structure:</p> |
| <pre> |
| char *handler |
| </pre> |
| |
| <p>If you wish to have your module engage a handler, you need |
| only to set <code>r->handler</code> to the name of the |
| handler at any time prior to the <code>invoke_handler</code> |
| stage of the request. Handlers are implemented as they were |
| before, albeit using the handler name instead of a content |
| type. While it is not necessary, the naming convention for |
| handlers is to use a dash-separated word, with no slashes, so |
| as to not invade the media type name-space.</p> |
| <!--#include virtual="footer.html" --> |
| </body> |
| </html> |
| |