handler.html.en revision af33a4994ae2ff15bc67d19ff1a7feb906745bf8
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><!--
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster This file is generated from xml source: DO NOT EDIT
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<title>Apache's Handler Use - Apache HTTP Server</title>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<link href="/style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<link href="/style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<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" />
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<script src="/style/scripts/prettify.js" type="text/javascript">
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<link href="/images/favicon.ico" rel="shortcut icon" /></head>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<p class="menu"><a href="/mod/">Modules</a> | <a href="/mod/quickreference.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>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<p class="apache">Apache HTTP Server Version 2.5</p>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<div class="up"><a href="./"><img title="<-" alt="<-" src="/images/left.gif" /></a></div>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<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.5</a></div><div id="page-content"><div id="preamble"><h1>Apache's Handler Use</h1>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<p><span>Available Languages: </span><a href="/en/handler.html" title="English"> en </a> |
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<a href="/es/handler.html" hreflang="es" rel="alternate" title="Espa�ol"> es </a> |
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<a href="/fr/handler.html" hreflang="fr" rel="alternate" title="Fran�ais"> fr </a> |
1c3134bddb7b413373d1668cbc4b7d95c2477667Mark de Reeper<a href="/ja/handler.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<a href="/ko/handler.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> |
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<a href="/tr/handler.html" hreflang="tr" rel="alternate" title="T�rk�e"> tr </a> |
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<a href="/zh-cn/handler.html" hreflang="zh-cn" rel="alternate" title="Simplified Chinese"> zh-cn </a></p>
c184142912cff04e5442d8bf70febe477285fb1cCraig McDonnell <p>This document describes the use of Apache's Handlers.</p>
c184142912cff04e5442d8bf70febe477285fb1cCraig McDonnell<div id="quickview"><ul id="toc"><li><img alt="" src="/images/down.gif" /> <a href="#definition">What is a Handler</a></li>
c184142912cff04e5442d8bf70febe477285fb1cCraig McDonnell<li><img alt="" src="/images/down.gif" /> <a href="#examples">Examples</a></li>
c184142912cff04e5442d8bf70febe477285fb1cCraig McDonnell<li><img alt="" src="/images/down.gif" /> <a href="#programmer">Programmer's Note</a></li>
c184142912cff04e5442d8bf70febe477285fb1cCraig McDonnell</ul><ul class="seealso"><li><a href="#comments_section">Comments</a></li></ul></div>
c184142912cff04e5442d8bf70febe477285fb1cCraig McDonnell<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
c184142912cff04e5442d8bf70febe477285fb1cCraig McDonnell<h2><a name="definition" id="definition">What is a Handler</a></h2>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster <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_imagemap.html">mod_imagemap</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/core.html#sethandler">SetHandler</a></code></li></ul></td></tr></table>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster <p>A "handler" is an internal Apache representation of the
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster action to be performed when a file is called. Generally, files
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster have implicit handlers, based on the file type. Normally, all
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster files are simply served by the server, but certain file types
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster are "handled" separately.</p>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster <p>Handlers may also be configured explicitly,
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster based on either filename extensions or on location,
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster without relation to file type. This is
0c893a059f84246bf91e2f0fbf63e4c92f8e5165Tony Bamford advantageous both because it is a more elegant solution, and
0c893a059f84246bf91e2f0fbf63e4c92f8e5165Tony Bamford because it also allows for both a type <strong>and</strong> a
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster handler to be associated with a file. (See also <a href="mod/mod_mime.html#multipleext">Files with Multiple
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster <p>Handlers can either be built into the server or included in
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster a module, or they can be added with the <code class="directive"><a href="/mod/mod_actions.html#action">Action</a></code> directive. The
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster built-in handlers in the standard distribution are as
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster follows:</p>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster <li><strong>default-handler</strong>: Send the file using the
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster <code>default_handler()</code>, which is the handler used by
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster default to handle static content. (core)</li>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster <li><strong>send-as-is</strong>: Send file with HTTP headers
0c893a059f84246bf91e2f0fbf63e4c92f8e5165Tony Bamford as is. (<code class="module"><a href="/mod/mod_asis.html">mod_asis</a></code>)</li>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster <li><strong>cgi-script</strong>: Treat the file as a CGI
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster script. (<code class="module"><a href="/mod/mod_cgi.html">mod_cgi</a></code>)</li>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster <li><strong>imap-file</strong>: Parse as an imagemap rule
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster file. (<code class="module"><a href="/mod/mod_imagemap.html">mod_imagemap</a></code>)</li>
35ab1c5bca11317474fe12bdd8d22c17cdaf2697Robert Wapshott <li><strong>server-info</strong>: Get the server's
35ab1c5bca11317474fe12bdd8d22c17cdaf2697Robert Wapshott configuration information. (<code class="module"><a href="/mod/mod_info.html">mod_info</a></code>)</li>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster <li><strong>server-status</strong>: Get the server's status
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster report. (<code class="module"><a href="/mod/mod_status.html">mod_status</a></code>)</li>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster <li><strong>type-map</strong>: Parse as a type map file for
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster content negotiation. (<code class="module"><a href="/mod/mod_negotiation.html">mod_negotiation</a></code>)</li>
35ab1c5bca11317474fe12bdd8d22c17cdaf2697Robert Wapshott </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<h2><a name="examples" id="examples">Examples</a></h2>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster <h3><a name="example1" id="example1">Modifying static content using a CGI script</a></h3>
0c893a059f84246bf91e2f0fbf63e4c92f8e5165Tony Bamford <p>The following directives will cause requests for files with
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster the <code>html</code> extension to trigger the launch of the
8af80418ba1ec431c8027fa9668e5678658d3611Allan FosterAddHandler add-footer .html
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster <p>Then the CGI script is responsible for sending the
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster originally requested document (pointed to by the
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster <code>PATH_TRANSLATED</code> environment variable) and making
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster whatever modifications or additions are desired.</p>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster <h3><a name="example2" id="example2">Files with HTTP headers</a></h3>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster <p>The following directives will enable the
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster <code>send-as-is</code> handler, which is used for files which
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster contain their own HTTP headers. All files in the
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster <code>/web/htdocs/asis/</code> directory will be processed by
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster the <code>send-as-is</code> handler, regardless of their
35ab1c5bca11317474fe12bdd8d22c17cdaf2697Robert Wapshott filename extensions.</p>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster SetHandler send-as-is
1c3134bddb7b413373d1668cbc4b7d95c2477667Mark de Reeper</Directory>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div>
35ab1c5bca11317474fe12bdd8d22c17cdaf2697Robert Wapshott<h2><a name="programmer" id="programmer">Programmer's Note</a></h2>
35ab1c5bca11317474fe12bdd8d22c17cdaf2697Robert Wapshott <p>In order to implement the handler features, an addition has
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster been made to the <a href="developer/API.html">Apache API</a> that
35ab1c5bca11317474fe12bdd8d22c17cdaf2697Robert Wapshott you may wish to make use of. Specifically, a new record has
35ab1c5bca11317474fe12bdd8d22c17cdaf2697Robert Wapshott been added to the <code>request_rec</code> structure:</p>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster char *handler
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster <p>If you wish to have your module engage a handler, you need
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster only to set <code>r->handler</code> to the name of the
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster handler at any time prior to the <code>invoke_handler</code>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster stage of the request. Handlers are implemented as they were
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster before, albeit using the handler name instead of a content
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster type. While it is not necessary, the naming convention for
35ab1c5bca11317474fe12bdd8d22c17cdaf2697Robert Wapshott handlers is to use a dash-separated word, with no slashes, so
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster as to not invade the media type name-space.</p>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<p><span>Available Languages: </span><a href="/en/handler.html" title="English"> en </a> |
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<a href="/es/handler.html" hreflang="es" rel="alternate" title="Espa�ol"> es </a> |
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<a href="/fr/handler.html" hreflang="fr" rel="alternate" title="Fran�ais"> fr </a> |
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<a href="/ja/handler.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<a href="/ko/handler.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> |
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<a href="/tr/handler.html" hreflang="tr" rel="alternate" title="T�rk�e"> tr </a> |
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<a href="/zh-cn/handler.html" hreflang="zh-cn" rel="alternate" title="Simplified Chinese"> zh-cn </a></p>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster</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>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<script type="text/javascript"><!--//--><![CDATA[//><!--
8af80418ba1ec431c8027fa9668e5678658d3611Allan Fostervar comments_shortname = 'httpd';
0c893a059f84246bf91e2f0fbf63e4c92f8e5165Tony Bamfordvar comments_identifier = 'http://httpd.apache.org/docs/trunk/handler.html';
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster(function(w, d) {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster d.write('<div id="comments_thread"><\/div>');
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster var s = d.createElement('script');
35ab1c5bca11317474fe12bdd8d22c17cdaf2697Robert Wapshott s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster})(window, document);
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<p class="apache">Copyright 2013 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>
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster<p class="menu"><a href="/mod/">Modules</a> | <a href="/mod/quickreference.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[//><!--
8af80418ba1ec431c8027fa9668e5678658d3611Allan Fosterif (typeof(prettyPrint) !== 'undefined') {
8af80418ba1ec431c8027fa9668e5678658d3611Allan Foster prettyPrint();