handler.html.zh-cn.utf8 11.3 KB
Newer Older
powelld's avatar
powelld committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-cn" xml:lang="zh-cn"><head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
<!--
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
              This file is generated from xml source: DO NOT EDIT
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      -->
<title>Apache 的处理器 - Apache HTTP 服务器 版本 2.4</title>
<link href="./style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="./style/css/manual-loose-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" /><link rel="stylesheet" type="text/css" href="./style/css/prettify.css" />
<script src="./style/scripts/prettify.min.js" type="text/javascript">
</script>

<link href="./images/favicon.ico" rel="shortcut icon" /></head>
<body id="manual-page"><div id="page-header">
<p class="menu"><a href="./mod/">模块</a> | <a href="./mod/directives.html">指令</a> | <a href="http://wiki.apache.org/httpd/FAQ">常见问题</a> | <a href="./glossary.html">术语</a> | <a href="./sitemap.html">网站导航</a></p>
<p class="apache">Apache HTTP 服务器版本 2.4</p>
<img alt="" src="./images/feather.png" /></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 服务器</a> &gt; <a href="http://httpd.apache.org/docs/">文档</a> &gt; <a href="./">版本 2.4</a></div><div id="page-content"><div id="preamble"><h1>Apache 的处理器</h1>
<div class="toplang">
<p><span>可用语言: </span><a href="./en/handler.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="./es/handler.html" hreflang="es" rel="alternate" title="Español">&nbsp;es&nbsp;</a> |
<a href="./fr/handler.html" hreflang="fr" rel="alternate" title="Français">&nbsp;fr&nbsp;</a> |
<a href="./ja/handler.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
<a href="./ko/handler.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="./tr/handler.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a> |
<a href="./zh-cn/handler.html" title="Simplified Chinese">&nbsp;zh-cn&nbsp;</a></p>
</div>
<div class="outofdate">此翻译可能过期。要了解最近的更改,请阅读英文版。</div>

    <p>本页描述 Apache 处理器的用法。</p>
  </div>
<div id="quickview"><a href="https://www.apache.org/foundation/contributing.html" class="badge"><img src="https://www.apache.org/images/SupportApache-small.png" alt="Support Apache!" /></a><ul id="toc"><li><img alt="" src="./images/down.gif" /> <a href="#definition">什么是处理器</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#examples">例子</a></li>
<li><img alt="" src="./images/down.gif" /> <a href="#programmer">对程序员的说明</a></li>
</ul><h3>参见</h3><ul class="seealso"><li><a href="#comments_section">评论</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">什么是处理器</a></h2>
    
    <table 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>处理器也可以被基于扩展名或位置来明确配置。它们都很有用,这不仅
    因为它是优雅的方案,而且还允许类型<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> 发送文件,它是用来处理静态内容的处理器(核心)。</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>: 按 imagemap 规则处理(<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> 环境变量指向它),按照需要作出  and making
      whatever modifications or additions are desired.</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>
        &lt;Directory /web/htdocs/asis&gt;<br />
        SetHandler send-as-is<br />
        &lt;/Directory&gt;
      </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>
    特别的,结构 <code>request_rec</code> 增加了新成员:</p>

    <div class="example"><p><code>
      char *handler
    </code></p></div>

    <p>如果你想要模块实现处理器,只需要在在处理请求,调用 <code>invoke_handler</code>
    之前,将 <code>r-&gt;handler</code> 指向处理器名称。处理器的实现与以前一样,只是用处理器名称取代了内容类型。
    虽然不是必要,处理器的命名约定是使用破折号分割的单词,没有斜杠,从而不侵入媒体类型名称空间。</p>
  </div></div>
<div class="bottomlang">
<p><span>可用语言: </span><a href="./en/handler.html" hreflang="en" rel="alternate" title="English">&nbsp;en&nbsp;</a> |
<a href="./es/handler.html" hreflang="es" rel="alternate" title="Español">&nbsp;es&nbsp;</a> |
<a href="./fr/handler.html" hreflang="fr" rel="alternate" title="Français">&nbsp;fr&nbsp;</a> |
<a href="./ja/handler.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
<a href="./ko/handler.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a> |
<a href="./tr/handler.html" hreflang="tr" rel="alternate" title="Türkçe">&nbsp;tr&nbsp;</a> |
<a href="./zh-cn/handler.html" title="Simplified Chinese">&nbsp;zh-cn&nbsp;</a></p>
</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">评论</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&amp;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>
<script type="text/javascript"><!--//--><![CDATA[//><!--
var comments_shortname = 'httpd';
var comments_identifier = 'http://httpd.apache.org/docs/2.4/handler.html';
(function(w, d) {
    if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
        d.write('<div id="comments_thread"><\/div>');
        var s = d.createElement('script');
        s.type = 'text/javascript';
        s.async = true;
        s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
        (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
    }
    else { 
        d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
    }
})(window, document);
//--><!]]></script></div><div id="footer">
<p class="apache">Copyright 2017 The Apache Software Foundation.<br />基于 <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> 许可证.</p>
<p class="menu"><a href="./mod/">模块</a> | <a href="./mod/directives.html">指令</a> | <a href="http://wiki.apache.org/httpd/FAQ">常见问题</a> | <a href="./glossary.html">术语</a> | <a href="./sitemap.html">网站导航</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
if (typeof(prettyPrint) !== 'undefined') {
    prettyPrint();
}
//--><!]]></script>
</body></html>