Apache HTTP Server 版本2.2
說明 | 通過讀取部分文件內(nèi)容自動(dòng)猜測文件的MIME類型 |
---|---|
狀態(tài) | 擴(kuò)展(E) |
模塊名 | mime_magic_module |
源文件 | mod_mime_magic.c |
本模塊采取Unix系統(tǒng)下file(1)
命令相同的方法:檢查文件開始的幾個(gè)字節(jié),來判定文件的MIME類型。它被作為當(dāng)mod_mime
無法解析時(shí),用來處理的"第二道防線"。
本模塊源自于Unix系統(tǒng)命令file(1)
的一個(gè)自由版本,它通過對(duì)來自文件的內(nèi)容使用"Magic數(shù)字"和其它一些線索來判定這個(gè)文件的具體內(nèi)容是什么。本模塊只有當(dāng)"Magic文件"在MimeMagicFile
指令中指定時(shí)才有效。
Magic文件的內(nèi)容是由4-5列的純文本組成的。文件中允許包含空行,但會(huì)被忽略。注釋行使用井號(hào)(#
)來引導(dǎo)。剩余的行按下面列被分解:
列 | 描述 | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 開始檢查的起始字節(jié),">"表示基于前面的非">"行。 | ||||||||||||||||||||||
2 | 匹配的數(shù)據(jù)類型
| ||||||||||||||||||||||
3 | 匹配的數(shù)據(jù)內(nèi)容 | ||||||||||||||||||||||
4 | 如果匹配文件的MIME類型 | ||||||||||||||||||||||
5 | 如果匹配文件的MIME編碼方式(可選) |
例如,下面的Magic文件行可以認(rèn)出一些音頻格式:
# 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
還有下面的示例可以區(qū)分帶*.doc
擴(kuò)展名的文件到底是Microsoft Word文檔還是Frame Maker文檔(兩種有相同后綴名但不兼容文件格式)。
# 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
一個(gè)可選的MIME編碼方式可以包含在第五列上。例如下面的行可以認(rèn)出gzip壓縮文件并設(shè)定他們的編碼方式。
# gzip (GNU zip, not to be confused with # [Info-ZIP/PKWARE] zip archiver) 0 string \037\213 application/octet-stream x-gzip
并不是每個(gè)系統(tǒng)都適用本模塊的。如果你的系統(tǒng)吞吐量已經(jīng)接近極限,或者你在進(jìn)行web服務(wù)器的基準(zhǔn)測試,你可能不希望啟動(dòng)這個(gè)模塊,因?yàn)樗奶幚頃?huì)顯著影響服務(wù)器的性能。
然而,已經(jīng)有人在努力改進(jìn)最初的file(1)
代碼,使它能更適合在一個(gè)非常繁忙的web服務(wù)器上工作。這主要是用在那種有數(shù)千用戶自己發(fā)布文檔的web服務(wù)器上。這在互聯(lián)網(wǎng)上可能是非常常見的情況。很多情況下,如果服務(wù)器能就文件的內(nèi)容作出比用文件名來區(qū)別的方式更加智能化的判斷是非常有用的。甚至在當(dāng)用戶沒有合理地命名他們的文件的情況下,它也可以用來減少那些諸如:"為什么我的頁面不工作啊"之類的報(bào)怨。你必須自己決定這額外的開銷是否適用于你的環(huán)境。
下面關(guān)于mod_mime_magic
的記錄包含在這里,是按照最初捐助者的版權(quán)限制和為了得到他們的承認(rèn)。
mod_mime_magic: 通過文件的Magic Number查找文件的MIME類型
Copyright (c) 1996-1997 Cisco Systems, Inc.
本軟件由Cisco系統(tǒng)有限公司于1997年7月提交給Apache組織。本軟件源代碼的進(jìn)一步修訂及新版本的派生必須承認(rèn)Cisco系統(tǒng)有限公司是本模塊的原始捐助者。所有其它許可與使用條件都屬于Apache組織。
本模塊的部分源代碼派生于最初發(fā)布在comp.sources.unix上的file命令的自由版本。根據(jù)要求,下面包含了那個(gè)程序的版權(quán)信息。
- Copyright (c) Ian F. Darwin, 1987. Written by Ian F. Darwin.
本軟件不隸屬于美國電話電報(bào)公司(AT&T)或者加利福尼亞大學(xué)董事會(huì)的任何許可。
在遵循以下限制的基礎(chǔ)上,任何人被授權(quán)免費(fèi)地在任何計(jì)算機(jī)系統(tǒng)上為任何目的使用、修改與重新分發(fā)這個(gè)軟件:
為了符合MrDarwin的條款:這是從自由的"file"命令而來并經(jīng)過了明顯的修改的版本。
說明 | 使用特定的Magic文件激活根據(jù)文件內(nèi)容確定文件MIME類型的功能 |
---|---|
語法 | MimeMagicFile file-path |
作用域 | server config, virtual host |
狀態(tài) | 擴(kuò)展(E) |
模塊 | mod_mime_magic |
MimeMagicFile
指令用來激活本模塊,默認(rèn)的Magic文件保存在conf/magic
中。相對(duì)路徑是相對(duì)于ServerRoot
的。虛擬主機(jī)會(huì)使用與主服務(wù)器相同的配置文件,除非使用了更特別的設(shè)定。在后者情況下,這些特別的設(shè)定會(huì)覆蓋主服務(wù)的設(shè)定。
MimeMagicFile conf/magic