⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mod_mime.html

📁 这个是我在web培训时老师提供的手册
💻 HTML
📖 第 1 页 / 共 4 页
字号:
<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>mod_mime - Apache 2.2 中文版参考手册</title>
</head>
<body><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="&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 Server</a> &gt; <a href="http://httpd.apache.org/docs/">文档</a> &gt; <a href="../index.html">版本2.2</a> &gt; <a href="./index.html">模块</a></div>

<div id="translation-info">   <a href="../translator_announcement.html#thanks">致谢</a> | <a href="../translator_announcement.html#announcement">译者声明</a> | 本篇译者:<a href="mailto:&#099;sfr&#0097;nk&#0064;&#099;itiz&#046;n&#0101;t">金步国</a> | 本篇译稿最后更新:2006年1月27日 | <a href="../translator_announcement.html#last_new">获取最新版本</a></div>
<div id="page-content"><div id="preamble"><h1>Apache模块 mod_mime</h1>

<table border="1" cellpadding="0" cellspacing="0" bordercolor="#AAAAAA" class="module">
<tr><th><a href="module-dict.html#Description">说明</a></th><td>根据文件扩展名决定应答的行为(处理器/过滤器)和内容(MIME类型/语言/字符集/编码)</td></tr>
<tr><th><a href="module-dict.html#Status">状态</a></th><td>基本(B)</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">模块名</a></th><td>mime_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">源文件</a></th><td>mod_mime.c</td></tr>
</table>
<h3>概述</h3>

    <p>本模块通过文件的扩展名将不同的"元信息"与文件关联起来。元信息在文档的文件名与文档的MIME类型、语言、字符集、编码方式之间建立关联。最终元信息会传送到服务器并参与内容协商,这样最终在考虑用户指定参数的基础上,在几个可能的文件里选择一个提供服务。关于<a href="../content-negotiation.html">内容协商</a>的更多信息,请参阅<code class="module"><a href="../mod/mod_negotiation.html">mod_negotiation</a></code>模块。</p>

    <p><code class="directive"><a href="#addcharset">AddCharset</a></code>, <code class="directive"><a href="#addencoding">AddEncoding</a></code>, <code class="directive"><a href="#addlanguage">AddLanguage</a></code>, <code class="directive"><a href="#addtype">AddType</a></code>指令都可以用于在文件的扩展名与文件的元信息之间建立映射关系。它们分别指明了文档的字符集、编码方式、语言、<a class="glossarylink" href="../glossary.html#mime-type" title="see glossary">MIME类型</a>(内容类型)。指令<code class="directive"><a href="#typesconfig">TypesConfig</a></code>用来指定一个文件,它也包含了扩展名到MIME类型的映射关系。</p>

    <p>另外,<code class="module"><a href="../mod/mod_mime.html">mod_mime</a></code>还可以定义<a href="../handler.html">处理器</a>和<a href="../filter.html">过滤器</a>来生成或处理信息。指令<code class="directive"><a href="#addhandler">AddHandler</a></code>, <code class="directive"><a href="#addoutputfilter">AddOutputFilter</a></code>, <code class="directive"><a href="#addinputfilter">AddInputFilter</a></code>控制了提供文档的模块或脚本的运作方式。<code class="directive"><a href="#multiviewsmatch">MultiviewsMatch</a></code>指令设定<code class="module"><a href="../mod/mod_negotiation.html">mod_negotiation</a></code>模块在尝试Multiview匹配时,如何处理文件扩展名。</p>

    <p>当<code class="module"><a href="../mod/mod_mime.html">mod_mime</a></code>模块在元信息与文件的扩展名之间建立映射以后,<code class="module"><a href="../mod/core.html">core</a></code>提供了一组指令用来建立某个给定范围内(也就是<code class="directive"><a href="../mod/core.html#location">&lt;Location&gt;</a></code>, <code class="directive"><a href="../mod/core.html#directory">&lt;Directory&gt;</a></code>, <code class="directive"><a href="../mod/core.html#files">&lt;Files&gt;</a></code>)所有相关文件与特定的元信息之间的关联。这些指令包括<code class="directive"><a href="../mod/core.html#forcetype">ForceType</a></code>, <code class="directive"><a href="../mod/core.html#sethandler">SetHandler</a></code>, <code class="directive"><a href="../mod/core.html#setinputfilter">SetInputFilter</a></code>, <code class="directive"><a href="../mod/core.html#setoutputfilter">SetOutputFilter</a></code> 。<code class="module"><a href="../mod/core.html">core</a></code>的指令会覆盖任何在<code class="module"><a href="../mod/mod_mime.html">mod_mime</a></code>模块中定义的文件扩展名映射。</p>

    <p>注意,改变一个文件的元信息,不会改变<code>Last-Modified</code>头的值。因此,以前被缓存的副本可能还会被用户或代理服务器使用。如果你改变了元信息(语言、内容类型、字符集、编码方式),你需要"触及"所有相关文件(更新他们的最后修改时间),以保证所有的访问者都收到正确的内容标题。</p>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="multipleext" id="multipleext">带多扩展名的文件</a></h2>
    <p>文件可以有多个扩展名,这些扩展名的顺序<em>一般情况</em>下是无关紧要的。例如:如果文件<code>welcome.html.fr</code>被映射为内容类型是<code>text/html</code> 、语言是法语的话,文件<code>welcome.fr.html</code>将被映射为完全相同的内容。如果一个以上的扩展名映射到同种类型的元信息上,那么将使用最右边的那个。比如:<code>.gif</code>的<a class="glossarylink" href="../glossary.html#mime-type" title="see glossary">MIME类型</a>是<code>image/gif</code> 、<code>.html</code>的<a class="glossarylink" href="../glossary.html#mime-type" title="see glossary">MIME类型</a>是<code>text/html</code> ,那么<code>welcome.gif.html</code>的<a class="glossarylink" href="../glossary.html#mime-type" title="see glossary">MIME类型</a>将是<code>text/html</code> 。</p>

    <p><a href="#charset-lang">语言</a>和<a href="#contentencoding">内容编码</a>会按照积累的方式处理,因为一个文件可以被指定为多种语言或编码。因此,<code>welcome.html.en.de</code>文件将会按照<code>Content-Language: en, de</code>和<code>Content-Type: text/html</code>发送。</p>

    <p>在处理带多个扩展名的文件并且这些扩展名同时关联<a class="glossarylink" href="../glossary.html#mime-type" title="see glossary">MIME类型</a>和处理器时,要特别小心。这种情况下通常是由与处理器相关的模块来处理得到结果。比如,文件扩展名<code>.imap</code>(通过<code class="module"><a href="../mod/mod_imagemap.html">mod_imagemap</a></code>模块)与<code>imap-file</code>处理器相关联,同时,<code>.html</code>文件扩展名的<a class="glossarylink" href="../glossary.html#mime-type" title="see glossary">MIME类型</a>是<code>text/html</code> ,那么文件<code>world.imap.html</code>将同时与<code>imap-file</code>处理器和<code>text/html</code><a class="glossarylink" href="../glossary.html#mime-type" title="see glossary">MIME类型</a>相关联。在处理这种情况的时候,<code>imap-file</code>处理器会被选用,因此,这个文件会被当作由<code class="module"><a href="../mod/mod_imagemap.html">mod_imagemap</a></code>模块处理的图像映射文件。</p>
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="contentencoding" id="contentencoding">内容编码</a></h2>
    <p>一个具有特定MIME类型的文件能够用一种特定的方法进行额外的编码,以简化它在互联网上的传输。这通常指的是压缩,比如<code>gzip</code> ;也可以是加密,例如<code>pgp</code> ;还可以是像UUencoding那样的编码,UUencoding是用来在ASCII(文本)格式的文件里,传输二进制文件的编码方式。</p>

    <p><a href="http://www.ietf.org/rfc/rfc2616.txt">HTTP/1.1 RFC</a>第14.11节是这样解释的:</p>

    <blockquote cite="http://www.ietf.org/rfc/rfc2616.txt">
      <p>实体头的"Content-Encoding"域是媒体类型的修饰符。如果存在,它的值指明了对实体本身进行额外编码的方式,以及为了得到"Content-Type"头所参照的媒体类型而必须采用的解码机制。"Content-Encoding"主要用来允许一个文件在不破坏它底层媒体类型的基础上,进行压缩。</p>
    </blockquote>

    <p>通过使用一种以上的文件扩展名(参见上面关于<a href="#multipleext">带多扩展名的文件</a>一节),你可以指定文件是一种特定的<em>类型</em>,还可以同时指定它特定的<em>编码方式</em>。</p>

    <p>例如,你有一个文件,它是Microsoft Word文档,同时为了减小它的大小,它还被压缩了。如果<code>.doc</code>扩展名表示Microsoft Word文件类型,而<code>.zip</code>扩展名表示pkzip文件编码方式,那么文件<code>Resume.doc.zip</code>就会被认出是一个用pkzip压缩过的Word文档。</p>

    <p>Apache把一个<code>Content-encoding</code>头和请求的资源一起发送,以便告诉浏览器资源编码的方式。</p>

    <div class="example"><p><code>Content-encoding: pkzip</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="charset-lang" id="charset-lang">字符集和语言</a></h2>
    <p>除了文件类型和文件编码方式外,还有一个重要的信息是文件的语言以及文件显示时的字符集。例如一个文档可能是用越南语或古斯拉夫语写的,并且也应该显示成这种语言。这样的信息也要在HTTP头里进行传输。</p>

    <p>字符集、语言、编码方式、内容类型等信息都是用在内容协商(参阅<code class="module"><a href="../mod/mod_negotiation.html">mod_negotiation</a></code>模块)处理过程中的。它们决定了当许多包含了不同的字符集、语言、编码方式、内容类型的文档都存在时,具体将哪个文档返回给客户端。所有由<code class="directive"><a href="#addcharset">AddCharset</a></code>, <code class="directive"><a href="#addencoding">AddEncoding</a></code>, <code class="directive"><a href="#addlanguage">AddLanguage</a></code>, <code class="directive"><a href="#addtype">AddType</a></code>指令定义的文件扩展名关联(还有在<code class="directive"><a href="../mod/mod_mime_magic.html#mimemagicfile">MimeMagicFile</a></code>指令中列出的文件扩展名)都参与了这个选择过程。使用<code class="directive"><a href="#addhandler">AddHandler</a></code>, <code class="directive"><a href="#addinputfilter">AddInputFilter</a></code>, <code class="directive"><a href="#addoutputfilter">AddOutputFilter</a></code>指令建立的关联,可以用<code class="directive"><a href="#multiviewsmatch">MultiviewsMatch</a></code>指令来决定参与或不参与匹配。</p>

    <h3><a name="charset" id="charset">字符集</a></h3>
      <p>为了传递更深层次的信息,Apache在传送一个<code>Content-Language</code>头以指定文档语言的基础上,还在随后的<code>Content-Type</code>头中指明了具体的字符集,以便更精确地描述这一信息。</p>

      <div class="example"><p><code>
        Content-Language: en, fr<br />
	Content-Type: text/plain; charset=ISO-8859-1
      </code></p></div>

      <p>语言的标识是这个语言名字的二字母缩写。<code>charset</code>是使用的字符集的精确名字。</p>
    
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AddCharset" id="AddCharset">AddCharset</a> <a name="addcharset" id="addcharset">指令</a></h2>
<table border="1" cellpadding="0" cellspacing="0" bordercolor="#AAAAAA" class="directive">
<tr><th><a href="directive-dict.html#Description">说明</a></th><td>在给定的文件扩展名与特定的字符集之间建立映射</td></tr>
<tr><th><a href="directive-dict.html#Syntax">语法</a></th><td><code>AddCharset <var>charset</var> <var>extension</var> [<var>extension</var>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">作用域</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">覆盖项</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">状态</a></th><td>基本(B)</td></tr>
<tr><th><a href="directive-dict.html#Module">模块</a></th><td>mod_mime</td></tr>
</table>
    <p><code class="directive">AddCharset</code>指令在特定的文件扩展名与特定的字符集之间建立映射。<var>charset</var>是以<var>extension</var>为扩展名的文件的<a href="http://www.iana.org/assignments/character-sets">MIME字符集参数</a>。这个映射关系会强制添加在所有现存的映射关系上,并覆盖所有现存的<var>extension</var>扩展名映射。</p>

    <div class="example"><h3>示例</h3><p><code>
      AddLanguage ja .ja<br />
      AddCharset EUC-JP .euc<br />
      AddCharset ISO-2022-JP .jis<br />
      AddCharset SHIFT_JIS .sjis
    </code></p></div>

    <p>有了以上定义以后,文档<code>xxxx.ja.jis</code>会被当成是使用字符集<code>ISO-2022-JP</code>的日文文档(文档<code>xxxx.jis.ja</code>也一样)。<code class="directive">AddCharset</code>指令除了用于通知客户端文档的字符集编码方式以便正确地翻译和显示以外,还用于<a href="../content-negotiation.html">内容协商</a>(根据用户的优先选择信息,从几个文档中选择一个返回给用户)。</p>

    <p><var>extension</var>参数是大小写无关的,并且可以带或不带前导点。</p>

<h3>参见</h3>
<ul>
<li><code class="module"><a href="../mod/mod_negotiation.html">mod_negotiation</a></code></li>
<li><code class="directive"><a href="../mod/core.html#adddefaultcharset">AddDefaultCharset</a></code></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AddEncoding" id="AddEncoding">AddEncoding</a> <a name="addencoding" id="addencoding">指令</a></h2>
<table border="1" cellpadding="0" cellspacing="0" bordercolor="#AAAAAA" class="directive">
<tr><th><a href="directive-dict.html#Description">说明</a></th><td>在文件扩展名与特定的编码方式之间建立映射关系</td></tr>
<tr><th><a href="directive-dict.html#Syntax">语法</a></th><td><code>AddEncoding <var>MIME-enc</var> <var>extension</var> [<var>extension</var>] ...</code></td></tr>
<tr><th><a href="directive-dict.html#Context">作用域</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
<tr><th><a href="directive-dict.html#Override">覆盖项</a></th><td>FileInfo</td></tr>
<tr><th><a href="directive-dict.html#Status">状态</a></th><td>基本(B)</td></tr>
<tr><th><a href="directive-dict.html#Module">模块</a></th><td>mod_mime</td></tr>
</table>
    <p><code class="directive">AddEncoding</code>指令在文件扩展名与特定的编码方式之间建立映射关系。指令定义以<var>extension</var>为扩展名的文件是由<var>MIME-enc</var>方式编码的。这个映射关系会添加在所有有效的映射关系上,并覆盖所有相同的<var>extension</var>扩展名映射。</p>

    <div class="example"><h3>示例</h3><p><code>
      AddEncoding x-gzip .gz<br />
      AddEncoding x-compress .Z
    </code></p></div>

    <p>有了上述定义后,包含<code>.gz</code>扩展名的文件被认为是用<code>x-gzip</code>方式编码的,而带<code>.Z</code>扩展名的文件则被认为是用<code>x-compress</code>方式编码的。</p>

    <p>老的客户端期望<code>x-gzip</code>和<code>x-compress</code> ,然而,按标准来说,它们分别等同于<code>gzip</code>和<code>compress</code> 。Apache在进行编码方式映射时,会忽略"<code>x-</code>"前缀。当响应需要包含编码方式时,Apache会使用客户端请求的格式(例如:<code>x-foo</code>或<code>foo</code>)来应答。如果客户端没有指明特定的格式,Apache会使用<code>AddEncoding</code>指令给定的编码方式。为了简化这一问题,你应该为这两个特定的编码方式始终使用<code>x-gzip</code>和<code>x-compress</code> 。对于象<code>deflate</code>这样比较新的编码方式,指定时不要带"<code>x-</code>"前缀。</p>

    <p><var>extension</var>参数是大小无关的,并且可以带或不带前导点。</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="AddHandler" id="AddHandler">AddHandler</a> <a name="addhandler" id="addhandler">指令</a></h2>
<table border="1" cellpadding="0" cellspacing="0" bordercolor="#AAAAAA" class="directive">
<tr><th><a href="directive-dict.html#Description">说明</a></th><td>在文件扩展名与特定的处理器之间建立映射</td></tr>
<tr><th><a href="directive-dict.html#Syntax">语法</a></th><td><code>AddHandler <var>handler-name</var> <var>extension</var> [<var>extension</var>] ...</code></td></tr>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -