handler.html.en revision 6f08220596b6ff0bac5c7b6dfd4a7eff0b9eccc9
0066eddda7203f6345b56f77d146a759298dc635gryzor<?xml version="1.0" encoding="ISO-8859-1"?>
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="&lt;-" alt="&lt;-" src="/images/left.gif" /></a></div><div id="path"><a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs-project/">Documentation</a> &gt; <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>
96ad5d81ee4a2cc66a4ae19893efc8aa6d06fae7jailletc
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>
0066eddda7203f6345b56f77d146a759298dc635gryzor
d29d9ab4614ff992b0e8de6e2b88d52b6f1f153erbowen
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>
0066eddda7203f6345b56f77d146a759298dc635gryzor
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 Extensions</a>.)</p>
0066eddda7203f6345b56f77d146a759298dc635gryzor
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
0066eddda7203f6345b56f77d146a759298dc635gryzor <ul>
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
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
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
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
0066eddda7203f6345b56f77d146a759298dc635gryzor <li><strong>server-info</strong>: Get the server's
0066eddda7203f6345b56f77d146a759298dc635gryzor configuration information. (<code class="module"><a href="/mod/mod_info.html">mod_info</a></code>)</li>
0066eddda7203f6345b56f77d146a759298dc635gryzor
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>
0066eddda7203f6345b56f77d146a759298dc635gryzor
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 </ul>
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
0066eddda7203f6345b56f77d146a759298dc635gryzor
0066eddda7203f6345b56f77d146a759298dc635gryzor <h3><a name="example1" id="example1">Modifying static content using a CGI script</a></h3>
0066eddda7203f6345b56f77d146a759298dc635gryzor
0066eddda7203f6345b56f77d146a759298dc635gryzor
0066eddda7203f6345b56f77d146a759298dc635gryzor <p>The following directives will cause requests for files with
0066eddda7203f6345b56f77d146a759298dc635gryzor the <code>html</code> extension to trigger the launch of the
0066eddda7203f6345b56f77d146a759298dc635gryzor <code>footer.pl</code> CGI script.</p>
0066eddda7203f6345b56f77d146a759298dc635gryzor
0066eddda7203f6345b56f77d146a759298dc635gryzor <div class="example"><p><code><code>
0066eddda7203f6345b56f77d146a759298dc635gryzor Action add-footer /cgi-bin/footer.pl<br />
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar AddHandler add-footer .html
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar </code></code></p></div>
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar
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
0066eddda7203f6345b56f77d146a759298dc635gryzor
0066eddda7203f6345b56f77d146a759298dc635gryzor <h3><a name="example2" id="example2">Files with HTTP headers</a></h3>
0066eddda7203f6345b56f77d146a759298dc635gryzor
0066eddda7203f6345b56f77d146a759298dc635gryzor
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>
30471a4650391f57975f60bbb6e4a90be7b284bfhumbedooh
0066eddda7203f6345b56f77d146a759298dc635gryzor <div class="example"><p><code><code>
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar &lt;Directory /web/htdocs/asis&gt;<br />
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar SetHandler send-as-is<br />
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar &lt;/Directory&gt;
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar </code></code></p></div>
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar
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
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar
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<pre>
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar char *handler
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar</pre>
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar <p>If you wish to have your module engage a handler, you need
1f1b6bf13313fdd14a45e52e553d3ff28689b717coar only to set <code>r-&gt;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>