1<?xml version="1.0" encoding="ISO-8859-1"?> 2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 3<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><!-- 4 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 5 This file is generated from xml source: DO NOT EDIT 6 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 7 --> 8<title>Apache's Handler Use - Apache HTTP Server</title> 9<link href="/style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" /> 10<link href="/style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" /> 11<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" /> 12<script src="/style/scripts/prettify.min.js" type="text/javascript"> 13</script> 14 15<link href="/images/favicon.ico" rel="shortcut icon" /></head> 16<body id="manual-page"><div id="page-header"> 17<p class="menu"><a href="/mod/">Modules</a> | <a href="/mod/directives.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> 18<p class="apache">Apache HTTP Server Version 2.4</p> 19<img alt="" src="/images/feather.gif" /></div> 20<div class="up"><a href="./"><img title="<-" alt="<-" src="/images/left.gif" /></a></div> 21<div id="path"> 22<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.4</a></div><div id="page-content"><div id="preamble"><h1>Apache's Handler Use</h1> 23<div class="toplang"> 24<p><span>Available Languages: </span><a href="/en/handler.html" title="English"> en </a> | 25<a href="/es/handler.html" hreflang="es" rel="alternate" title="Espa�ol"> es </a> | 26<a href="/fr/handler.html" hreflang="fr" rel="alternate" title="Fran�ais"> fr </a> | 27<a href="/ja/handler.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | 28<a href="/ko/handler.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> | 29<a href="/tr/handler.html" hreflang="tr" rel="alternate" title="T�rk�e"> tr </a> | 30<a href="/zh-cn/handler.html" hreflang="zh-cn" rel="alternate" title="Simplified Chinese"> zh-cn </a></p> 31</div> 32 33 <p>This document describes the use of Apache's Handlers.</p> 34 </div> 35<div id="quickview"><ul id="toc"><li><img alt="" src="/images/down.gif" /> <a href="#definition">What is a Handler</a></li> 36<li><img alt="" src="/images/down.gif" /> <a href="#examples">Examples</a></li> 37<li><img alt="" src="/images/down.gif" /> <a href="#programmer">Programmer's Note</a></li> 38</ul><ul class="seealso"><li><a href="#comments_section">Comments</a></li></ul></div> 39<div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 40<div class="section"> 41<h2><a name="definition" id="definition">What is a Handler</a></h2> 42 43 <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> 44 45 46 <p>A "handler" is an internal Apache representation of the 47 action to be performed when a file is called. Generally, files 48 have implicit handlers, based on the file type. Normally, all 49 files are simply served by the server, but certain file types 50 are "handled" separately.</p> 51 52 <p>Handlers may also be configured explicitly, 53 based on either filename extensions or on location, 54 without relation to file type. This is 55 advantageous both because it is a more elegant solution, and 56 because it also allows for both a type <strong>and</strong> a 57 handler to be associated with a file. (See also <a href="mod/mod_mime.html#multipleext">Files with Multiple 58 Extensions</a>.)</p> 59 60 <p>Handlers can either be built into the server or included in 61 a module, or they can be added with the <code class="directive"><a href="/mod/mod_actions.html#action">Action</a></code> directive. The 62 built-in handlers in the standard distribution are as 63 follows:</p> 64 65 <ul> 66 <li><strong>default-handler</strong>: Send the file using the 67 <code>default_handler()</code>, which is the handler used by 68 default to handle static content. (core)</li> 69 70 <li><strong>send-as-is</strong>: Send file with HTTP headers 71 as is. (<code class="module"><a href="/mod/mod_asis.html">mod_asis</a></code>)</li> 72 73 <li><strong>cgi-script</strong>: Treat the file as a CGI 74 script. (<code class="module"><a href="/mod/mod_cgi.html">mod_cgi</a></code>)</li> 75 76 <li><strong>imap-file</strong>: Parse as an imagemap rule 77 file. (<code class="module"><a href="/mod/mod_imagemap.html">mod_imagemap</a></code>)</li> 78 79 <li><strong>server-info</strong>: Get the server's 80 configuration information. (<code class="module"><a href="/mod/mod_info.html">mod_info</a></code>)</li> 81 82 <li><strong>server-status</strong>: Get the server's status 83 report. (<code class="module"><a href="/mod/mod_status.html">mod_status</a></code>)</li> 84 85 <li><strong>type-map</strong>: Parse as a type map file for 86 content negotiation. (<code class="module"><a href="/mod/mod_negotiation.html">mod_negotiation</a></code>)</li> 87 </ul> 88 </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 89<div class="section"> 90<h2><a name="examples" id="examples">Examples</a></h2> 91 92 93 <h3><a name="example1" id="example1">Modifying static content using a CGI script</a></h3> 94 95 96 <p>The following directives will cause requests for files with 97 the <code>html</code> extension to trigger the launch of the 98 <code>footer.pl</code> CGI script.</p> 99 100 <pre class="prettyprint lang-config">Action add-footer /cgi-bin/footer.pl 101AddHandler add-footer .html</pre> 102 103 104 <p>Then the CGI script is responsible for sending the 105 originally requested document (pointed to by the 106 <code>PATH_TRANSLATED</code> environment variable) and making 107 whatever modifications or additions are desired.</p> 108 109 110 <h3><a name="example2" id="example2">Files with HTTP headers</a></h3> 111 112 113 <p>The following directives will enable the 114 <code>send-as-is</code> handler, which is used for files which 115 contain their own HTTP headers. All files in the 116 <code>/web/htdocs/asis/</code> directory will be processed by 117 the <code>send-as-is</code> handler, regardless of their 118 filename extensions.</p> 119 120 <pre class="prettyprint lang-config"><Directory /web/htdocs/asis> 121 SetHandler send-as-is 122</Directory></pre> 123 124 125 126 </div><div class="top"><a href="#page-header"><img alt="top" src="/images/up.gif" /></a></div> 127<div class="section"> 128<h2><a name="programmer" id="programmer">Programmer's Note</a></h2> 129 130 131 <p>In order to implement the handler features, an addition has 132 been made to the <a href="developer/API.html">Apache API</a> that 133 you may wish to make use of. Specifically, a new record has 134 been added to the <code>request_rec</code> structure:</p> 135 136 <pre class="prettyprint lang-c">char *handler</pre> 137 138 139 <p>If you wish to have your module engage a handler, you need 140 only to set <code>r->handler</code> to the name of the 141 handler at any time prior to the <code>invoke_handler</code> 142 stage of the request. Handlers are implemented as they were 143 before, albeit using the handler name instead of a content 144 type. While it is not necessary, the naming convention for 145 handlers is to use a dash-separated word, with no slashes, so 146 as to not invade the media type name-space.</p> 147 </div></div> 148<div class="bottomlang"> 149<p><span>Available Languages: </span><a href="/en/handler.html" title="English"> en </a> | 150<a href="/es/handler.html" hreflang="es" rel="alternate" title="Espa�ol"> es </a> | 151<a href="/fr/handler.html" hreflang="fr" rel="alternate" title="Fran�ais"> fr </a> | 152<a href="/ja/handler.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | 153<a href="/ko/handler.html" hreflang="ko" rel="alternate" title="Korean"> ko </a> | 154<a href="/tr/handler.html" hreflang="tr" rel="alternate" title="T�rk�e"> tr </a> | 155<a href="/zh-cn/handler.html" hreflang="zh-cn" rel="alternate" title="Simplified Chinese"> zh-cn </a></p> 156</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> 157<script type="text/javascript"><!--//--><![CDATA[//><!-- 158var comments_shortname = 'httpd'; 159var comments_identifier = 'http://httpd.apache.org/docs/2.4/handler.html'; 160(function(w, d) { 161 if (w.location.hostname.toLowerCase() == "httpd.apache.org") { 162 d.write('<div id="comments_thread"><\/div>'); 163 var s = d.createElement('script'); 164 s.type = 'text/javascript'; 165 s.async = true; 166 s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier; 167 (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s); 168 } 169 else { 170 d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>'); 171 } 172})(window, document); 173//--><!]]></script></div><div id="footer"> 174<p class="apache">Copyright 2014 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> 175<p class="menu"><a href="/mod/">Modules</a> | <a href="/mod/directives.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[//><!-- 176if (typeof(prettyPrint) !== 'undefined') { 177 prettyPrint(); 178} 179//--><!]]></script> 180</body></html>