handler.html.en revision 6f08220596b6ff0bac5c7b6dfd4a7eff0b9eccc9
0066eddda7203f6345b56f77d146a759298dc635gryzor<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
fd9abdda70912b99b24e3bf1a38f26fde908a74cnd<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><!--
fd9abdda70912b99b24e3bf1a38f26fde908a74cnd XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
fd9abdda70912b99b24e3bf1a38f26fde908a74cnd This file is generated from xml source: DO NOT EDIT
0066eddda7203f6345b56f77d146a759298dc635gryzor XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0066eddda7203f6345b56f77d146a759298dc635gryzor --><title>Apache's Handler Use - Apache HTTP Server</title><link href="/style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" /><link href="/images/favicon.ico" rel="shortcut icon" /></head><body id="manual-page"><div id="page-header"><p class="menu"><a href="/mod/">Modules</a> | <a href="/mod/directives.html">Directives</a> | <a href="/faq/">FAQ</a> | <a href="/glossary.html">Glossary</a> | <a href="/sitemap.html">Sitemap</a></p><p class="apache">Apache HTTP Server Version 2.0</p><img alt="" src="/images/feather.gif" /></div><div class="up"><a href="./"><img title="<-" alt="<-" src="/images/left.gif" /></a></div><div id="path"><a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">HTTP Server</a> > <a href="http://httpd.apache.org/docs-project/">Documentation</a> > <a href="./">Version 2.0</a></div><div id="page-content"><div id="preamble"><h1>Apache's Handler Use</h1>
0066eddda7203f6345b56f77d146a759298dc635gryzor <p>This document describes the use of Apache's Handlers.</p>
0066eddda7203f6345b56f77d146a759298dc635gryzor </div><div id="quickview"><ul id="toc"><li><img alt="" src="/images/down.gif" /> <a href="#definition">What is a Handler</a></li><li><img alt="" src="/images/down.gif" /> <a href="#examples">Examples</a></li><li><img alt="" src="/images/down.gif" /> <a href="#programmer">Programmer's Note</a></li></ul></div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div><div class="section"><h2><a name="definition" id="definition">What is a Handler</a></h2>
0066eddda7203f6345b56f77d146a759298dc635gryzor <table class="related"><tr><th>Related Modules</th><th>Related Directives</th></tr><tr><td><ul><li><code class="module"><a href="/mod/mod_actions.html">mod_actions</a></code></li><li><code class="module"><a href="/mod/mod_asis.html">mod_asis</a></code></li><li><code class="module"><a href="/mod/mod_cgi.html">mod_cgi</a></code></li><li><code class="module"><a href="/mod/mod_imap.html">mod_imap</a></code></li><li><code class="module"><a href="/mod/mod_info.html">mod_info</a></code></li><li><code class="module"><a href="/mod/mod_mime.html">mod_mime</a></code></li><li><code class="module"><a href="/mod/mod_negotiation.html">mod_negotiation</a></code></li><li><code class="module"><a href="/mod/mod_status.html">mod_status</a></code></li></ul></td><td><ul><li><code class="directive"><a href="/mod/mod_actions.html#action">Action</a></code></li><li><code class="directive"><a href="/mod/mod_mime.html#addhandler">AddHandler</a></code></li><li><code class="directive"><a href="/mod/mod_mime.html#removehandler">RemoveHandler</a></code></li><li><code class="directive"><a href="/mod/mod_mime.html#sethandler">SetHandler</a></code></li></ul></td></tr></table>
2e545ce2450a9953665f701bb05350f0d3f26275nd <p>A "handler" is an internal Apache representation of the
d29d9ab4614ff992b0e8de6e2b88d52b6f1f153erbowen action to be performed when a file is called. Generally, files
d29d9ab4614ff992b0e8de6e2b88d52b6f1f153erbowen have implicit handlers, based on the file type. Normally, all
0066eddda7203f6345b56f77d146a759298dc635gryzor files are simply served by the server, but certain file types
0066eddda7203f6345b56f77d146a759298dc635gryzor are "handled" separately.</p>
af33a4994ae2ff15bc67d19ff1a7feb906745bf8rbowen <p>Apache 1.1 adds the ability to use handlers explicitly.
3f08db06526d6901aa08c110b5bc7dde6bc39905nd Based on either filename extensions or on location, handlers
0066eddda7203f6345b56f77d146a759298dc635gryzor can be specified without relation to file type. This is
0066eddda7203f6345b56f77d146a759298dc635gryzor advantageous both because it is a more elegant solution, and
0066eddda7203f6345b56f77d146a759298dc635gryzor because it also allows for both a type <strong>and</strong> a
3f08db06526d6901aa08c110b5bc7dde6bc39905nd handler to be associated with a file. (See also <a href="mod/mod_mime.html#multipleext">Files with Multiple
0066eddda7203f6345b56f77d146a759298dc635gryzor <p>Handlers can either be built into the server or included in
0066eddda7203f6345b56f77d146a759298dc635gryzor a module, or they can be added with the <code class="directive"><a href="/mod/mod_actions.html#action">Action</a></code> directive. The
f086b4b402fa9a2fefc7dda85de2a3cc1cd0a654rjung built-in handlers in the standard distribution are as
0066eddda7203f6345b56f77d146a759298dc635gryzor follows:</p>
0066eddda7203f6345b56f77d146a759298dc635gryzor <li><strong>default-handler</strong>: Send the file using the
0066eddda7203f6345b56f77d146a759298dc635gryzor <code>default_handler()</code>, which is the handler used by
0066eddda7203f6345b56f77d146a759298dc635gryzor default to handle static content. (core)</li>
0066eddda7203f6345b56f77d146a759298dc635gryzor <li><strong>send-as-is</strong>: Send file with HTTP headers
0066eddda7203f6345b56f77d146a759298dc635gryzor as is. (<code class="module"><a href="/mod/mod_asis.html">mod_asis</a></code>)</li>
0066eddda7203f6345b56f77d146a759298dc635gryzor <li><strong>cgi-script</strong>: Treat the file as a CGI
0066eddda7203f6345b56f77d146a759298dc635gryzor script. (<code class="module"><a href="/mod/mod_cgi.html">mod_cgi</a></code>)</li>
0066eddda7203f6345b56f77d146a759298dc635gryzor <li><strong>imap-file</strong>: Parse as an imagemap rule
0066eddda7203f6345b56f77d146a759298dc635gryzor file. (<code class="module"><a href="/mod/mod_imap.html">mod_imap</a></code>)</li>
0066eddda7203f6345b56f77d146a759298dc635gryzor configuration information. (<code class="module"><a href="/mod/mod_info.html">mod_info</a></code>)</li>
0861b81a268185b10c825a79ca278b25b8ea205bnd <li><strong>server-status</strong>: Get the server's status
0066eddda7203f6345b56f77d146a759298dc635gryzor report. (<code class="module"><a href="/mod/mod_status.html">mod_status</a></code>)</li>
d5f93073383d85ebb0e4b77ae5bff13551a45dd9nd <li><strong>type-map</strong>: Parse as a type map file for
0066eddda7203f6345b56f77d146a759298dc635gryzor content negotiation. (<code class="module"><a href="/mod/mod_negotiation.html">mod_negotiation</a></code>)</li>
0066eddda7203f6345b56f77d146a759298dc635gryzor </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div><div class="section"><h2><a name="examples" id="examples">Examples</a></h2>
0066eddda7203f6345b56f77d146a759298dc635gryzor <h3><a name="example1" id="example1">Modifying static content using a CGI script</a></h3>
0066eddda7203f6345b56f77d146a759298dc635gryzor <p>The following directives will cause requests for files with
0066eddda7203f6345b56f77d146a759298dc635gryzor the <code>html</code> extension to trigger the launch of the
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar AddHandler add-footer .html
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar <p>Then the CGI script is responsible for sending the
0066eddda7203f6345b56f77d146a759298dc635gryzor originally requested document (pointed to by the
0066eddda7203f6345b56f77d146a759298dc635gryzor <code>PATH_TRANSLATED</code> environment variable) and making
0066eddda7203f6345b56f77d146a759298dc635gryzor whatever modifications or additions are desired.</p>
0066eddda7203f6345b56f77d146a759298dc635gryzor <h3><a name="example2" id="example2">Files with HTTP headers</a></h3>
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar <p>The following directives will enable the
0066eddda7203f6345b56f77d146a759298dc635gryzor <code>send-as-is</code> handler, which is used for files which
0066eddda7203f6345b56f77d146a759298dc635gryzor contain their own HTTP headers. All files in the
0066eddda7203f6345b56f77d146a759298dc635gryzor <code>/web/htdocs/asis/</code> directory will be processed by
0066eddda7203f6345b56f77d146a759298dc635gryzor the <code>send-as-is</code> handler, regardless of their
0066eddda7203f6345b56f77d146a759298dc635gryzor filename extensions.</p>
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar SetHandler send-as-is<br />
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar </Directory>
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div><div class="section"><h2><a name="programmer" id="programmer">Programmer's Note</a></h2>
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar <p>In order to implement the handler features, an addition has
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar been made to the <a href="developer/API.html">Apache API</a> that
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar you may wish to make use of. Specifically, a new record has
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar been added to the <code>request_rec</code> structure:</p>
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar char *handler
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar <p>If you wish to have your module engage a handler, you need
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar only to set <code>r->handler</code> to the name of the
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar handler at any time prior to the <code>invoke_handler</code>
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar stage of the request. Handlers are implemented as they were
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar before, albeit using the handler name instead of a content
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar type. While it is not necessary, the naming convention for
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar handlers is to use a dash-separated word, with no slashes, so
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar as to not invade the media type name-space.</p>
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar </div></div><div id="footer"><p class="apache">Maintained by the <a href="http://httpd.apache.org/docs-project/">Apache HTTP Server Documentation Project</a></p><p class="menu"><a href="/mod/">Modules</a> | <a href="/mod/directives.html">Directives</a> | <a href="/faq/">FAQ</a> | <a href="/glossary.html">Glossary</a> | <a href="/sitemap.html">Sitemap</a></p></div></body></html>