📄 handler.html
字号:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<meta name="keywords" content="Apache, 中文, 手册, 中文版, 中文手册, 中文版手册, 参考手册, 中文参考手册, 金步国" />
<meta name="description" content="Apache 2.2 中文版参考手册" />
<meta name="author" content="金步国" />
<link href="./style/css/manual-zip.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="./style/css/manual-zip-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="./style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
<title>Apache处理器的使用 - Apache 2.2 中文版参考手册</title>
</head>
<body id="manual-page">
<div id="page-header"><p class="menu"><a href="./mod/index.html">模块索引</a> | <a href="./mod/directives.html">指令索引</a> | <a href="./faq/index.html">常见问题</a> | <a href="./glossary.html">词汇表</a> | <a href="./sitemap.html">站点导航</a></p><p class="apache">Apache HTTP Server 版本2.2</p><img alt="" src="./images/feather.gif" /></div>
<div class="up"><a href="./index.html"><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/">文档</a> > <a href="./index.html">版本2.2</a></div>
<div id="translation-info"> <a href="./translator_announcement.html#thanks">致谢</a> | <a href="./translator_announcement.html#announcement">译者声明</a> | 本篇译者:<a href="mailto:csfrank@citiz.net">金步国</a> | 本篇译稿最后更新:2006年1月4日 | <a href="./translator_announcement.html#last_new">获取最新版本</a></div>
<div id="page-content"><div id="preamble"><h1>Apache处理器的使用</h1>
<p>本文阐述Apache处理器的使用。</p>
</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">什么是处理器(Handler)</a></h2>
<table border="1" cellpadding="0" cellspacing="0" bordercolor="#AAAAAA" class="related">
<tr><th>相关模块</th><th>相关指令</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>
<p>"处理器"是当一个文件被调用时,Apache所执行操作的内部表现。文件一般都有基于其文件类型的隐含处理器。通常,文件都只是被服务器简单的提交,只有某些文件类型会被特别地"处理"。</p>
<p>Apache1.1增加了使用处理器的能力。处理器可以基于文件名后缀或位置进行指定,而不只是文件类型,其优越性不仅在于它是一个优秀的方案,还在于它允许一个文件同时与一种类型<strong>和</strong>一个处理器相关联。(参见:<a href="mod/mod_mime.html#multipleext">带多扩展名的文件</a>)</p>
<p>处理器可以被编译进服务器也可以包含在模块中,还可以用<code class="directive"><a href="./mod/mod_actions.html#action">Action</a></code>指令增加。标准发行版中内建的处理器如下:</p>
<ul>
<li><strong>default-handler</strong>:使用<code>default_handler()</code>发送文件,这是处理静态内容的默认处理器。(<code class="module"><a href="./mod/core.html">core</a></code>)</li>
<li><strong>send-as-is</strong>:按原样带HTTP头发送文件。(<code class="module"><a href="./mod/mod_asis.html">mod_asis</a></code>)</li>
<li><strong>cgi-script</strong>:将文件视为CGI脚本。(<code class="module"><a href="./mod/mod_cgi.html">mod_cgi</a></code>)</li>
<li><strong>imap-file</strong>:将文件作为映射表规则文件解析。(<code class="module"><a href="./mod/mod_imagemap.html">mod_imagemap</a></code>)</li>
<li><strong>server-info</strong>:获取服务器的配置信息。(<code class="module"><a href="./mod/mod_info.html">mod_info</a></code>)</li>
<li><strong>server-status</strong>:获取服务器状态的报告。(<code class="module"><a href="./mod/mod_status.html">mod_status</a></code>)</li>
<li><strong>type-map</strong>:将文件作为类型表文件解析以实现内容协商。(<code class="module"><a href="./mod/mod_negotiation.html">mod_negotiation</a></code>)</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="examples" id="examples">例子</a></h2>
<h3><a name="example1" id="example1">用CGI脚本修改静态的内容</a></h3>
<p>以下指令,将使对带有<code>html</code>后缀的文件的请求,调用CGI脚本<code>footer.pl</code></p>
<div class="example"><p><code>
Action add-footer /cgi-bin/footer.pl<br />
AddHandler add-footer .html
</code></p></div>
<p>然后,由CGI脚本负责发送(由环境变量<code>PATH_TRANSLATED</code>指向的)原始请求文档,并按需要进行修改或增加。</p>
<h3><a name="example2" id="example2">带HTTP头的文件</a></h3>
<p>以下指令启用<code>send-as-is</code>处理器,它用于处理本身包含HTTP头的文件,这样,所有位于<code>/web/htdocs/asis/</code>目录中的文件,无论其后缀名是什么,都由<code>send-as-is</code>进行处理。</p>
<div class="example"><p><code>
<Directory /web/htdocs/asis><br />
SetHandler send-as-is<br />
</Directory>
</code></p></div>
</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">程序员注意事项</a></h2>
<p>为了实现处理器功能,<a href="developer/API.html">Apache API</a>里面增加了一些内容,你可能会用到。尤其是<a href="developer/API.html">Apache API</a>结构中增加了一个字段:</p>
<div class="example"><p><code>
char *handler
</code></p></div>
<p>如果你的模块需要使用处理器,只须在对请求执行<code>invoke_handler</code>之前,设置<code>r->handler</code>为该处理器的名称即可。处理器的实现和以前一样,只是使用了处理器名称而不是内容类型。处理器的名称可以有"-",但不能有"/",以避免和介质类型名称冲突。</p>
</div></div>
<div id="footer">
<p class="apache">本文允许自由使用、分发、转载,但必须保留译者署名;详见:<a href="./translator_announcement.html#announcement">译者声明</a>。</p>
<p class="menu"><a href="./mod/index.html">模块索引</a> | <a href="./mod/directives.html">指令索引</a> | <a href="./faq/index.html">常见问题</a> | <a href="./glossary.html">词汇表</a> | <a href="./sitemap.html">站点导航</a></p></div>
</body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -