Apache HTTP Server 2.4 版
描述 | 通过查看文件内容的前几个字节来确定文件的 MIME 类型 |
---|---|
状态 | 扩展 |
模块标识符 | mime_magic_module |
源文件 | mod_mime_magic.c |
此模块以与 Unix file(1)
命令相同的方式确定文件的 MIME 类型:它查看文件的前几个字节。它旨在作为 mod_mime
无法解析的案例的“第二道防线”。
此模块源自 Unix 的 file(1)
命令的免费版本,该命令使用“魔数”和文件内容中的其他提示来确定内容是什么。仅当 MimeMagicFile
指令指定了魔数文件时,此模块才处于活动状态。
文件内容是 4-5 列的纯 ASCII 文本。允许空白行,但会忽略。注释行使用井号 (#
)。其余行将解析以下列
列 | 描述 | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 开始检查的字节号 " > " 表示依赖于之前的非 "> " 行 | ||||||||||||||||||||||
2 | 要匹配的数据类型
| ||||||||||||||||||||||
3 | 要匹配的数据内容 | ||||||||||||||||||||||
4 | 如果匹配,则为 MIME 类型 | ||||||||||||||||||||||
5 | 如果匹配,则为 MIME 编码(可选) |
例如,以下魔数文件行将识别某些音频格式
# Sun/NeXT audio data 0 string .snd >12 belong 1 audio/basic >12 belong 2 audio/basic >12 belong 3 audio/basic >12 belong 4 audio/basic >12 belong 5 audio/basic >12 belong 6 audio/basic >12 belong 7 audio/basic >12 belong 23 audio/x-adpcm
或者这些将识别包含 Microsoft Word 或 FrameMaker 文档的 *.doc
文件之间的区别。(这些是不兼容的文件格式,它们使用相同的文件后缀。)
# Frame 0 string \<MakerFile application/x-frame 0 string \<MIFFile application/x-frame 0 string \<MakerDictionary application/x-frame 0 string \<MakerScreenFon application/x-frame 0 string \<MML application/x-frame 0 string \<Book application/x-frame 0 string \<Maker application/x-frame # MS-Word 0 string \376\067\0\043 application/msword 0 string \320\317\021\340\241\261 application/msword 0 string \333\245-\0\0\0 application/msword
可以将可选的 MIME 编码作为第五列包含。例如,这可以识别 gzip 文件并为它们设置编码。
# gzip (GNU zip, not to be confused with # [Info-ZIP/PKWARE] zip archiver) 0 string \037\213 application/octet-stream x-gzip
此模块不适合所有系统。如果您的系统勉强跟上负载,或者您正在执行 Web 服务器基准测试,您可能不想启用此模块,因为处理不是免费的。
但是,我们努力提高原始 file(1)
代码的性能,使其适合繁忙的 Web 服务器。它专为拥有数千个用户发布自己文档的服务器而设计。这在内部网中可能非常普遍。很多时候,如果服务器可以对文件的內容做出比文件名更明智的判断,这将非常有用……即使只是为了减少用户错误地命名自己的文件时出现的“为什么我的页面无法正常工作”的呼叫。您必须决定额外的工作是否适合您的环境。
以下注释适用于 mod_mime_magic
模块,并在此处包含以符合贡献者的版权限制,这些限制要求对其进行确认。
mod_mime_magic:通过文件魔数进行 MIME 类型查找
版权所有 (c) 1996-1997 Cisco Systems, Inc.
Cisco Systems 于 1997 年 7 月将此软件提交给 Apache Group。此源代码的未来修订版和衍生版本必须确认 Cisco Systems 是此模块的原始贡献者。所有其他许可和使用条件均为 Apache Group 的条件。
此代码中的部分内容源自最初发布到 comp.sources.unix 的文件命令的免费版本。该程序的版权信息如下所示,这是必需的。
- 版权所有 (c) Ian F. Darwin,1987 年。由 Ian F. Darwin 编写。
此软件不受美国电话电报公司或加州大学理事会任何许可的约束。
任何人都被允许将此软件用于任何计算机系统上的任何目的,并自由地修改和重新分发它,但须遵守以下限制
为了符合 Darwin 先生的条款:这与免费的“文件”命令相比已发生了非常显著的修改。
realloc()
。描述 | 使用指定的魔数文件启用基于文件内容的 MIME 类型确定 |
---|---|
语法 | MimeMagicFile 文件路径 |
上下文 | 服务器配置、虚拟主机 |
状态 | 扩展 |
模块 | mod_mime_magic |
MimeMagicFile
指令可用于启用此模块,默认文件分发在 conf/magic
中。非根路径相对于 ServerRoot
。虚拟主机将使用与主服务器相同的文件,除非使用更具体的设置,在这种情况下,更具体的设置将覆盖主服务器的文件。
MimeMagicFile conf/magic