Apache 模块 mod_mime

Description:将请求的文件名 extensions 与文件的行为(处理程序和过滤器)和内容(MIME 类型,语言,字符集和编码)相关联
Status:Base
Module Identifier:mime_module
Source File:mod_mime.c

Summary

该模块用于通过将 URI 中的模式或文件名 Map 到元数据值,将内容元数据分配给为 HTTP 响应选择的内容。例如,内容文件的文件 extensions 通常定义内容的 Internet 媒体类型,语言,字符集和内容编码。该信息在包含该内容的 HTTP 消息中发送,并在选择替代项时用于内容协商,这样,在选择几种可能的内容之一进行服务时,将尊重用户的偏好。有关content negotiation的更多信息,请参见mod_negotiation

指令AddCharsetAddEncodingAddLanguageAddType都用于将文件 extensionsMap 到该文件的元数据上。它们分别设置文档的字符集,内容编码,内容语言和media-type(Content Type)。指令TypesConfig用于指定一个文件,该文件还将 extensionsMap 到媒体类型。

另外,mod_mime可以定义起源和处理内容的handlerfilters。指令AddHandlerAddOutputFilterAddInputFilter控制为文档提供服务的模块或脚本。 MultiviewsMatch指令允许mod_negotiation在测试 Multiviews 匹配时考虑将这些文件 extensions 包括在内。

mod_mime将元数据与文件 extensions 相关联时,core服务器提供的指令用于将给定容器(例如<Location><Directory><Files>)中的所有文件与特定元数据相关联。这些指令包括ForceTypeSetHandlerSetInputFilterSetOutputFilter。核心指令会覆盖mod_mime中定义的任何文件名 extensionsMap。

请注意,更改文件的元数据不会更改Last-ModifiedHeaders 的值。因此,Client 端或代理仍可以将先前缓存的副本与先前的 Headers 一起使用。如果更改元数据(语言,Content Type,字符集或编码),则可能需要“触摸”受影响的文件(更新其上次修改日期),以确保所有访问者都收到正确的内容 Headers。

具有多个 extensions 的文件

文件可以具有多个 extensions。extensions 的 Sequences通常无关紧要。例如,如果文件welcome.html.frMap 到 Content Typetext/html和语言法语,则文件welcome.fr.html将 Map 到完全相同的信息。如果给出了多个 extensions,它们 Map 到相同类型的元数据,则将使用右侧的 extensions,语言和内容编码除外。例如,如果.gifMap 到media-type image/gif.htmlMap 到媒体类型text/html,则文件welcome.gif.html将与媒体类型text/html关联。

Languagescontent encodings被视为累积的,因为一个人可以为一种特定的资源分配不止一种语言或编码。例如,文件welcome.html.en.de将与Content-Language: en, deContent-Type: text/html一起交付。

当具有多个 extensions 的文件同时与media-type和处理程序相关联时,应格外小心。通常,这将导致请求由与处理程序关联的模块处理。例如,如果.imapextensionsMap 到处理程序imap-file(来自mod_imagemap),而.htmlextensionsMap 到媒体类型text/html,则文件world.imap.html将与imap-file处理程序和text/html媒体类型相关联。处理该文件时,将使用imap-file处理程序,因此它将被视为mod_imagemap图像 Map 文件。

如果您只希望将文件名的最后一个点分隔的部分 Map 到特定的元数据,则不要使用Add*指令。例如,如果您希望将文件foo.html.cgi作为 CGI 脚本处理,而不希望文件bar.cgi.html进行处理,则可以使用AddHandler cgi-script .cgi而不是

仅基于最终 extensions 配置处理程序

<FilesMatch "[^.]+\.cgi$">
  SetHandler cgi-script
</FilesMatch>

Content encoding

特定media-type的文件可以另外以特定方式编码,以简化 Internet 上的传输。尽管这通常指的是压缩,例如gzip,但它也可以指加密(例如pgp)或诸如 UUencoding 的编码,该编码旨在以 ASCII(文本)格式传输二进制文件。

HTTP/1.1 RFC,第 14.11 节以这种方式表示:

Note

“内容编码实体标题”字段用作媒体类型的修饰符。当存在时,其值指示已将哪些其他内容编码应用于实体,因此必须应用哪种解码机制才能获得 Content-Type Headers 字段引用的媒体类型。内容编码主要用于允许压缩文档而不会丢失其基础媒体类型的标识。

通过使用多个文件 extensions(请参见上面有关多个文件 extensions 的部分),可以表明文件具有特定的* type ,并且还具有特定的 encoding *。

例如,您可能有一个 Microsoft Word 文档文件,该文件用 pkzip 压缩以减小其大小。如果.docextensions 与 Microsoft Word 文件类型相关联,而.zipextensions 与 pkzip 文件编码相关联,则文件Resume.doc.zip将被称为 pkzip 格式的 Word 文档。

Apache 向资源发送一个Content-encodingHeaders,以告知 Client 端浏览器有关编码方法的信息。

Content-encoding: pkzip

字符集和语言

除了文件类型和文件编码外,另一条重要的信息是特定文档所用的语言以及应以哪种字符集显示文件。例如,该文档可能以越南语字母或西里尔字母书写,并应按原样显示。此信息也以 HTTP Headers 传输。

在存在多个字符集,语言,编码或 mime 的替代文档时,在内容协商过程中将使用字符集,语言,编码和 mime 类型(请参见mod_negotiation)来确定将哪个文档提供给 Client 端。类型。使用AddCharsetAddEncodingAddLanguageAddType指令创建的所有文件 extensions 关联(以及MimeMagicFile中列出的 extensions)都参与此选择过程。通过使用MultiviewsMatch指令,可以将仅使用AddHandlerAddInputFilterAddOutputFilter指令关联的文件 extensions 包括在内或排除在匹配之外。

Charset

为了传达此进一步信息,Apache 可以选择发送Content-LanguageHeaders,以指定文档所使用的语言,并且可以将附加信息附加到Content-TypeHeaders 上,以指示应用于正确呈现信息的特定字符集。

Content-Language: en, fr Content-Type: text/plain; charset=ISO-8859-1

语言规范是该语言的两个字母的缩写。 charset是应使用的特定字符集的名称。

AddCharset Directive

Description:将给定的文件 extensionsMap 到指定的内容字符集
Syntax:AddCharset charset extension [extension] ...
Context:服务器配置,虚拟主机,目录,.htaccess
Override:FileInfo
Status:Base
Module:mod_mime

AddCharset指令将给定的文件 extensionsMap 到指定的内容字符集(给定字符编码的 Internet 注册名称)。 charset 是文件名包含 extensions 的资源的媒体类型的字符集参数。该 Map 将添加到任何已生效的 Map 中,从而覆盖同一 extensions 已存在的所有 Map。

Example

AddLanguage ja .ja
AddCharset EUC-JP .euc
AddCharset ISO-2022-JP .jis
AddCharset SHIFT_JIS .sjis

然后,文档xxxx.ja.jis将被视为字符集为ISO-2022-JP的日语文档(文档xxxx.jis.ja也会如此)。 AddCharset指令不仅可用于通知 Client 端有关文档的字符编码,以便可以正确地解释和显示文档,对于content negotiation,服务器可根据 Client 端的字符集首选项从多个文档中返回一个文档。

extension 参数不区分大小写,可以指定带或不带前导点。文件名可能具有multiple extensions,并且会将 extensions 参数与每个文件名进行比较。

See also

AddEncoding Directive

Description:将给定的文件 extensionsMap 到指定的编码类型
Syntax:AddEncoding encoding extension [extension] ...
Context:服务器配置,虚拟主机,目录,.htaccess
Override:FileInfo
Status:Base
Module:mod_mime

AddEncoding指令将给定的文件 extensionsMap 到指定的 HTTP 内容编码。 encoding 是 HTTP 内容编码,用于附加到以 extensions 命名的文档的 Content-Encoding Headers 字段的值。该 Map 将添加到任何已生效的 Map 中,从而覆盖同一 extensions 已存在的所有 Map。

Example

AddEncoding x-gzip .gz
AddEncoding x-compress .Z

这将导致包含.gzextensions 的文件名被标记为使用x-gzip编码,而包含.Zextensions 的文件名被标记为使用x-compress编码。

老 Client 期望x-gzipx-compress,但是标准规定它们分别等效于gzipcompress。 Apache 通过忽略任何前导x-来进行内容编码比较。当使用编码进行响应时,Apache 将使用 Client 端请求的任何形式(,即x-foofoo)。如果 Client 端没有特别要求特定的表单,Apache 将使用AddEncoding指令给出的表单。为了简短起见,对于这两种特定的编码,应始终使用x-gzipx-compress。应该指定较新的编码,例如deflate而不使用x-

extension 参数不区分大小写,可以指定带或不带前导点。文件名可能具有multiple extensions,并且会将 extensions 参数与每个文件名进行比较。

AddHandler Directive

Description:将文件 extensionsMap 到指定的处理程序
Syntax:AddHandler handler-name extension [extension] ...
Context:服务器配置,虚拟主机,目录,.htaccess
Override:FileInfo
Status:Base
Module:mod_mime

具有 extensions 的文件将由指定的handler-name提供。该 Map 将添加到任何已生效的 Map 中,从而覆盖同一 extensions 已存在的所有 Map。例如,要激活文件 extensions 为.cgi的 CGI 脚本,可以使用:

AddHandler cgi-script .cgi

将其放入 httpd.conf 文件后,任何包含.cgiextensions 的文件都将被视为 CGI 程序。

extension 参数不区分大小写,可以指定带或不带前导点。文件名可能具有multiple extensions,并且会将 extensions 参数与每个文件名进行比较。

See also

AddInputFilter Directive

Description:将文件 extensionsMap 到将处理 Client 端请求的过滤器
Syntax:AddInputFilter filter[;filter...] extension [extension] ...
Context:服务器配置,虚拟主机,目录,.htaccess
Override:FileInfo
Status:Base
Module:mod_mime

AddInputFilter将文件 extensionsextensionsMap 到filters,当服务器收到 Client 端请求和 POST Importing 时,该文件将处理。这是在其他地方定义的所有过滤器的补充,包括SetInputFilter指令。该 Map 将合并到所有已生效的 Map 上,从而覆盖同一 extensions 已存在的所有 Map。

如果指定了多个过滤器,则必须使用分号将它们按处理内容的 Sequences 分隔开。过滤器不区分大小写。

extension 参数不区分大小写,可以指定带或不带前导点。文件名可能具有multiple extensions,并且会将 extensions 参数与每个文件名进行比较。

See also

AddLanguage Directive

Description:将给定的文件 extensionsMap 到指定的内容语言
Syntax:AddLanguage language-tag extension [extension] ...
Context:服务器配置,虚拟主机,目录,.htaccess
Override:FileInfo
Status:Base
Module:mod_mime

AddLanguage指令将给定的文件 extensionsMap 到指定的内容语言。具有文件名 extensions 的文件被分配一个 HTTP 内容语言值,该语言标签的语言标签与 RFC 3066 定义的语言标识符相对应。此伪指令将覆盖该 extensions 已经存在的所有 Map。

Example

AddEncoding x-compress .Z
AddLanguage en .en
AddLanguage fr .fr

然后,文档xxxx.en.Z将被视为压缩的英文文档(文档xxxx.Z.en也会被视为)。尽管内容语言已报告给 Client 端,但浏览器不太可能使用此信息。 AddLanguage指令对content negotiation更为有用,其中服务器根据 Client 端的语言首选项从多个文档中返回一个。

如果为同一 extensions 分配了多种语言,则最后遇到的是所使用的 extensions。也就是说,对于以下情况:

AddLanguage en .en
AddLanguage en-gb .en
AddLanguage en-us .en

extensions 为.en的文档将被视为en-us

extension 参数不区分大小写,可以指定带或不带前导点。文件名可能具有multiple extensions,并且会将 extensions 参数与每个文件名进行比较。

See also

AddOutputFilter Directive

Description:将文件 extensionsMap 到将处理服务器响应的过滤器
Syntax:AddOutputFilter filter[;filter...] extension [extension] ...
Context:服务器配置,虚拟主机,目录,.htaccess
Override:FileInfo
Status:Base
Module:mod_mime

AddOutputFilter指令将文件 extensionsextensionsMap 到filters,它将在将来自服务器的响应发送给 Client 端之前对其进行处理。这是在其他地方定义的所有过滤器的补充,包括SetOutputFilterAddOutputFilterByType指令。该 Map 将合并到所有已生效的 Map 上,从而覆盖同一 extensions 已存在的所有 Map。

例如,以下配置将处理服务器端包含的所有.shtml文件,然后使用mod_deflate压缩输出。

AddOutputFilter INCLUDES;DEFLATE shtml

如果指定了多个过滤器,则必须使用分号将它们按处理内容的 Sequences 分隔开。 filter 参数不区分大小写。

extension 参数不区分大小写,可以指定带或不带前导点。文件名可能具有multiple extensions,并且会将 extensions 参数与每个文件名进行比较。

请注意,使用AddOutputFilter指令定义一组过滤器时,所做的任何定义都将替换AddOutputFilter指令所作的任何先前定义。

# Effective filter "DEFLATE"
AddOutputFilter DEFLATE shtml
<Location "/foo">
  # Effective filter "INCLUDES", replacing "DEFLATE"
  AddOutputFilter INCLUDES shtml
</Location>
<Location "/bar">
  # Effective filter "INCLUDES;DEFLATE", replacing "DEFLATE"
  AddOutputFilter INCLUDES;DEFLATE shtml
</Location>
<Location "/bar/baz">
  # Effective filter "BUFFER", replacing "INCLUDES;DEFLATE"
  AddOutputFilter BUFFER shtml
</Location>
<Location "/bar/baz/buz">
  # No effective filter, replacing "BUFFER"
  RemoveOutputFilter shtml
</Location>

See also

AddType Directive

Description:将给定的文件 extensionsMap 到指定的 Content Type
Syntax:AddType media-type extension [extension] ...
Context:服务器配置,虚拟主机,目录,.htaccess
Override:FileInfo
Status:Base
Module:mod_mime

AddType指令将给定的文件 extensionsMap 到指定的 Content Type。 media-type 是用于包含 extensions 的文件名的media type。该 Map 将添加到任何已生效的 Map 中,从而覆盖同一 extensions 已存在的所有 Map。

Note

建议使用AddType指令添加新的媒体类型,而不要更改TypesConfig文件。

Example

AddType image/gif .gif

或者,要在一个指令中指定多个文件 extensions:

Example

AddType image/jpeg jpeg jpg jpe

extension 参数不区分大小写,可以指定带或不带前导点。文件名可能具有multiple extensions,并且会将 extensions 参数与每个文件名进行比较。

通过用qs限定媒体类型,可以达到与mod_negotiationLanguagePriority类似的效果:

Example

AddType application/rss+xml;qs=0.8 .xml

这在以下情况下很有用,例如,当请求Accept: */*的 Client 端实际上无法处理服务器返回的内容时,*。

该指令主要配置为从文件系统提供的静态文件生成的 Content Type。对于静态文件以外的资源,其中响应的生成器通常指定 Content-Type,此指令无效。

Note

如果没有为请求显式设置任何处理程序,则指定的 Content Type 也将用作处理程序名称。

当诸如SetHandlerAddHandler之类的显式指令不适用于当前请求时,通常将这些指令通常设置的内部处理程序名称设置为此指令指定的 Content Type。

这是一种历史行为,某些第三方模块(例如 mod_php)可能会使用该行为负责匹配请求。

应该避免依赖于这种“合成”类型的配置。此外,限制对SetHandlerAddHandler的访问的配置也应同时限制对该指令的访问。

See also

DefaultLanguage Directive

Description:为当前上下文中尚未通过其他方式分配语言标签的所有资源,定义要在“内容语言”Headers 字段中发送的默认语言标签。
Syntax:DefaultLanguage language-tag
Context:服务器配置,虚拟主机,目录,.htaccess
Override:FileInfo
Status:Base
Module:mod_mime

DefaultLanguage指令告诉 Apache,该指令范围内的所有资源(* eg *,当前<Directory>容器覆盖的所有资源)没有显式语言扩展(例如AddLanguage所配置的.fr.de)应分配给语言标签的内容语言。例如,这允许将整个目录树标记为包含荷兰语内容,而不必重命名每个文件。请注意,与使用 extensions 指定语言不同,DefaultLanguage只能指定一种语言。

如果没有生效的DefaultLanguage指令,并且文件没有由AddLanguage配置的任何语言 extensions,则不会生成 Content-Language 头字段。

Example

DefaultLanguage en

See also

ModMimeUsePathInfo Directive

Description:告诉mod_mimepath_info组件视为文件名的一部分
Syntax:ModMimeUsePathInfo On|Off
Default:ModMimeUsePathInfo Off
Context:directory
Status:Base
Module:mod_mime

ModMimeUsePathInfo指令用于将文件名和path_info URL 组件组合在一起,以将mod_mime的指令应用于请求。默认值为Off-因此,会忽略path_info组件。

当您有虚拟文件系统时,建议使用此伪指令。

Example

ModMimeUsePathInfo On

如果您有/index.php/foo.shtml的请求,则mod_mime现在会将传入的请求视为/index.php/foo.shtml,并且AddOutputFilter INCLUDES .shtml之类的指令会将INCLUDES过滤器添加到该请求中。如果未设置ModMimeUsePathInfo,则不会添加INCLUDES过滤器。这对于虚拟路径(例如,由<Location>定义的虚拟路径)将类似地工作

See also

MultiviewsMatch Directive

Description:使用 MultiViews 搜索匹配文件时将包括的文件类型
Syntax:MultiviewsMatch Any|NegotiatedOnly|Filters|Handlers [Handlers|Filters]
Default:MultiviewsMatch NegotiatedOnly
Context:服务器配置,虚拟主机,目录,.htaccess
Override:FileInfo
Status:Base
Module:mod_mime

MultiviewsMatch允许mod_negotiation的多视图功能具有三种不同的行为。多视图允许请求* e.g. * index.html匹配基本请求* e.g. * index.html.enindex.html.frindex.html.gz之后的任何协商 extensions。

NegotiatedOnly选项提供了基本名称后面的每个 extensions 都必须与公认的mod_mimeextensions 进行内容协商,例如,字符集,Content Type,语言或编码。这是最严格的实现,具有最少的意外副作用,并且是默认行为。

要包括与处理程序和/或过滤器关联的扩展,请将MultiviewsMatch伪指令设置为HandlersFilters或两个选项关键字。如果所有其他因素都相等,则将投放最小的文件,例如*在决定 500 字节的index.html.cgi和 1000 字节的index.html.pl之间确定时,在该示例中.cgi文件将获胜。如果.asis文件与asis-handler关联,则.asis文件的用户可能更喜欢使用 Handler 选项。

您最终可以允许Any个 extensions 匹配,即使mod_mime无法识别该 extensions 也是如此。这可能会导致不可预测的结果,例如,向站点 Management 员提供以前从未提供过的.old 或.bak 文件。

例如,以下配置将允许处理程序和过滤器参与 Multviews,但将排除未知文件:

MultiviewsMatch Handlers Filters

<Location><LocationMatch>部分中不允许MultiviewsMatch

See also

RemoveCharset Directive

Description:删除一组文件 extensions 的任何字符集关联
Syntax:RemoveCharset extension [extension] ...
Context:虚拟主机,目录,.htaccess
Override:FileInfo
Status:Base
Module:mod_mime

RemoveCharset指令删除具有给定 extensions 的文件的任何字符集关联。这允许子目录中的.htaccess个文件撤消从父目录或服务器配置文件继承的任何关联。

extension 参数不区分大小写,可以指定带或不带前导点。

Example

RemoveCharset .html .shtml

RemoveEncoding Directive

Description:删除一组文件 extensions 的任何内容编码关联
Syntax:RemoveEncoding extension [extension] ...
Context:虚拟主机,目录,.htaccess
Override:FileInfo
Status:Base
Module:mod_mime

RemoveEncoding指令删除具有给定 extensions 的文件的所有编码关联。这允许子目录中的.htaccess个文件撤消从父目录或服务器配置文件继承的任何关联。其用法的一个示例可能是:

/foo/.htaccess:

AddEncoding x-gzip .gz
AddType text/plain .asc
<Files "*.gz.asc">
    RemoveEncoding .gz
</Files>

这将导致foo.gz被标记为使用 gzip 方法编码,而foo.gz.asc被标记为未编码的纯文本文件。

Note

RemoveEncoding伪指令在所有AddEncoding伪指令之后被处理,因此,如果它们都出现在同一目录配置中,则它们可能会撤消后者的影响。

extension 参数不区分大小写,可以指定带或不带前导点。

RemoveHandler Directive

Description:删除一组文件 extensions 的所有处理程序关联
Syntax:RemoveHandler extension [extension] ...
Context:虚拟主机,目录,.htaccess
Override:FileInfo
Status:Base
Module:mod_mime

RemoveHandler指令删除具有给定 extensions 的文件的所有处理程序关联。这允许子目录中的.htaccess个文件撤消从父目录或服务器配置文件继承的任何关联。其用法的一个示例可能是:

/foo/.htaccess:

AddHandler server-parsed .html

/foo/bar/.htaccess:

RemoveHandler .html

这具有将/foo/bar目录中的.html个文件返回为普通文件而不是作为解析候选文件的作用(请参阅mod_include模块)。

extension 参数不区分大小写,可以指定带或不带前导点。

RemoveInputFilter Directive

Description:删除一组文件 extensions 的所有 Importing 过滤器关联
Syntax:RemoveInputFilter extension [extension] ...
Context:虚拟主机,目录,.htaccess
Override:FileInfo
Status:Base
Module:mod_mime

RemoveInputFilter指令删除具有给定 extensions 的文件的所有 Importingfilter关联。这允许子目录中的.htaccess文件撤消从父目录或服务器配置文件继承的任何关联。

extension 参数不区分大小写,可以指定带或不带前导点。

See also

RemoveLanguage Directive

Description:删除一组文件 extensions 的任何语言关联
Syntax:RemoveLanguage extension [extension] ...
Context:虚拟主机,目录,.htaccess
Override:FileInfo
Status:Base
Module:mod_mime

RemoveLanguage指令删除具有给定 extensions 的文件的任何语言关联。这允许子目录中的.htaccess个文件撤消从父目录或服务器配置文件继承的任何关联。

extension 参数不区分大小写,可以指定带或不带前导点。

RemoveOutputFilter Directive

Description:删除一组文件 extensions 的所有输出过滤器关联
Syntax:RemoveOutputFilter extension [extension] ...
Context:虚拟主机,目录,.htaccess
Override:FileInfo
Status:Base
Module:mod_mime

RemoveOutputFilter指令删除具有给定 extensions 的文件的所有输出filter关联。这允许子目录中的.htaccess文件撤消从父目录或服务器配置文件继承的任何关联。

extension 参数不区分大小写,可以指定带或不带前导点。

Example

RemoveOutputFilter shtml

See also

RemoveType Directive

Description:删除一组文件 extensions 的任何 Content Type 关联
Syntax:RemoveType extension [extension] ...
Context:虚拟主机,目录,.htaccess
Override:FileInfo
Status:Base
Module:mod_mime

RemoveType指令删除具有给定 extensions 的文件的任何media type关联。这允许子目录中的.htaccess文件撤消从父目录或服务器配置文件继承的任何关联。其用法的一个示例可能是:

/foo/.htaccess:

RemoveType .cgi

这将删除对/foo/目录及其下的.cgi文件的任何特殊处理,从而导致包含那些文件的响应忽略 HTTP Content-Type Headers 字段。

Note

RemoveType伪指令在所有AddType伪指令之后被处理,因此,如果它们都出现在同一目录配置中,则它们可能会撤消后者的影响。

extension 参数不区分大小写,可以指定带或不带前导点。

TypesConfig Directive

Description:mime.types文件的位置
Syntax:TypesConfig file-path
Default:TypesConfig conf/mime.types
Context:server config
Status:Base
Module:mod_mime

TypesConfig伪指令设置media types配置文件的位置。文件路径相对于ServerRoot。该文件设置从文件 extensions 到 Content Type 的默认 Map 列表。大多数 Management 员使用其 os 提供的mime.types文件,该文件将常见的文件 extensions 与http://www.iana.org/assignments/media-types/index.html维护的 IANA 注册媒体类型的官方列表以及大量非官方类型相关联。通过提供大多数媒体类型定义,这简化了httpd.conf文件,并且可以根据需要被AddType指令覆盖。您不应编辑mime.types文件,因为升级服务器时它可能会被替换。

该文件包含AddType指令的参数格式的行:

media-type [extension] ...

extensions 的大小写无关紧要。空行和以井号(#)开头的行将被忽略。空行用于完整性(mime.types 文件的)。 Apache httpd 仍然可以使用mod_mime_magic确定这些类型。

not

请确实发送请求到 Apache HTTP Server 项目,以在分布式mime.types文件中添加任何新条目,除非(1)已经在 IANA 上注册,以及(2)使用跨平台的广泛接受的,无冲突的文件 extensions。 category/x-subtype请求将被自动拒绝,任何新的两个字母的扩展都会被拒绝,因为它们以后可能会与已经拥挤的语言和字符集名称空间发生冲突。

See also