summaryrefslogtreecommitdiffstats
path: root/docs/manual/handler.html.en
diff options
context:
space:
mode:
Diffstat (limited to 'docs/manual/handler.html.en')
-rw-r--r--docs/manual/handler.html.en138
1 files changed, 138 insertions, 0 deletions
diff --git a/docs/manual/handler.html.en b/docs/manual/handler.html.en
new file mode 100644
index 0000000000..4472b3165d
--- /dev/null
+++ b/docs/manual/handler.html.en
@@ -0,0 +1,138 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
+<HTML>
+<HEAD>
+<TITLE>Apache's Handler Use</TITLE>
+</HEAD>
+
+<BODY>
+<IMG SRC="../images/apache_sub.gif" ALT="">
+<h1>Apache's Handler Use</h1>
+
+<h2>What is a Handler</h2>
+
+<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 typed are "handled"
+seperately. For example, you may use a type of
+"application/x-httpd-cgi" to invoke CGI scripts.</p>
+
+<p>Apache 1.1 adds the additional ability to use handlers
+explicitly. Either based on filename extensions or on location, these
+handlers are unrelated to file type. This is advantageous both because
+it is a more elegant solution, but it also allows for both a type
+<strong>and</strong> a handler to be associated with a file.</p>
+
+<p>Handlers can either be built into the server or to a module, or
+they can be added with the <a
+href="mod_actions.html#action">Action</a> directive. The built-in
+handlers in the standard distribution are as follows:</p>
+
+<ul>
+<li><strong>send-as-is</strong>:
+ Send file with HTTP headers as is.
+ (<a href="mod_asis.html">mod_asis</a>)
+<li><strong>cgi-script</strong>:
+ Treat the file as a CGI script.
+ (<a href="mod_cgi.html">mod_cgi</a>)
+<li><strong>imap-file</strong>:
+ Imagemap rule file.
+ (<a href="mod_imap.html">mod_imap</a>)
+<li><strong>server-info</strong>:
+ Get the server's configuration information
+ (<a href="mod_info.html">mod_info</a>)
+<li><strong>server-parsed</strong>:
+ Parse for server-side includes
+ (<a href="mod_include.html">mod_include</a>)
+<li><strong>server-status</strong>:
+ Get the server's status report
+ (<a href="mod_status.html">mod_status</a>)
+<li><strong>type-map</strong>:
+ Parse as a type map file for content negotation
+ (<a href="mod_negotiation.html">mod_negotiation</a>)
+</ul>
+
+<p>
+
+<h2>Directives</h2>
+<ul>
+<li><A HREF="#addhandler">AddHandler</A>
+<li><A HREF="#sethandler">SetHandler</A>
+</ul>
+
+<hr>
+
+<h2><a name="addhandler">AddHandler</a></h2>
+
+<strong>Syntax:</strong> &lt;AddHandler <em>handler-name extention</em>&gt;<br>
+<strong>Context:</strong> server config, virtual host, directory, .htaccess<br>
+<strong>Status:</strong> Base<br>
+<strong>Module:</strong> mod_mime
+
+<p>AddHandler maps the filename extension <em>extension</em> to the
+handler <em>handler-name</em>. For example, to activate CGI scripts
+with the file extension "<code>.cgi</code>", you might use:
+<pre>
+ AddHandler cgi-script cgi
+</pre>
+
+<p>Once that has been put into your srm.conf or httpd.conf file, any
+file ending with "<code>.cgi</code>" will be treated as a CGI
+program.</p>
+
+<hr>
+
+<h2><a name="sethandler">SetHandler</a></h2>
+
+<strong>Syntax:</strong> &lt;SetHandler <em>handler-name</em>&gt;<br>
+<strong>Context:</strong> directory, .htaccess<br>
+<strong>Status:</strong> Base<br>
+<strong>Module:</strong> mod_mime
+
+<p>When placed into an <code>.htaccess</code> file or a
+<code>&lt;Directory&gt;</code> or <code>&lt;Location</code> section,
+this directive forces all matching files to be parsed through the
+handler given by <em>handler-name</em>. For example, if you had a
+directory you wanted to be parsed entirely as imagemap rule files,
+regardless of extension, you might put the following into an
+<code>.htaccess</code> file in that directory:
+<pre>
+ SetHandler imap-file
+</pre>
+<p>Another example: if you wanted to have the server display a status
+report whenever a URL of <code>http://servername/status</code> was
+called, you might put the following into access.conf:
+<pre>
+ &lt;Location /status&gt;
+ SetHandler server-status
+ &lt;/Location&gt;
+</pre>
+
+<p><hr>
+
+<h2>Programmer's Note</h2>
+
+<p>In order to implement the handler features, an addition has been
+made to the <a href="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-&gt;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, albiet using
+the handler name instead of a content type. While it is not
+neccessary, the naming convention for handlers is to use a
+dash-seperated word, with no slashes, so as to not invade the media
+type namespace.</p>
+
+<hr>
+
+<A HREF="../"><IMG SRC="../images/apache_home.gif" ALT="Home"></A>
+<A HREF="./"><IMG SRC="../images/apache_index.gif" ALT="Index"></A>
+
+</BODY>
+</HTML>
+