<-
Apache > HTTP 伺服器 > 文件 > 版本 2.4 > 模組

Apache 模組 mod_mime_magic

可用語言:  en  |  fr 

說明透過查看文件內容的幾個位元組來判斷文件的 MIME 類型
狀態擴充功能
模組識別碼mime_magic_module
原始檔mod_mime_magic.c

摘要

此模組以 Unix 命令 file(1) 的運作方式來判斷 MIME 類型:查看文件的前幾個位元組。此模組主要用作「第二道防線」,以防範 mod_mime 無法解決的情況。

此模組源自 Unix 命令 file(1) 的免費版本,後者使用文件內容的「關鍵數字」及其他提示來判斷內容。此模組僅在由 MimeMagicFile 指令指定的魔法文件存在時才會作用。

Support Apache!

主題

指令

錯誤修正檢查清單

另請參照

top

魔法文件的格式

該文件的內容為 4-5 欄位的純 ASCII 文字。空白行是允許的,但會被忽略。註解行使用井字號 (#)。其餘行會依以下欄位進行剖析

欄位說明
1 開始檢查的位元組數
>」表示依賴於前一個非「>」行
2

要比對的資料類型

位元組 單一字元
短數 機器順序的 16 位元整數
機器順序的 32 位元整數
字串 任意長度的字串
日期 長整數日期(自 Unix epoch/1970 以來的秒數)
beshort 大端序 16 位元整數
belong 大端序 32 位元整數
bedate 大端序 32 位元整數日期
leshort 小端序 16 位元整數
lelong 小端序 32 位元整數
ledate 小端序 32 位元整數日期
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
top

效能議題

此模組並非適用於每個系統。如果您的系統勉強能夠應付負載,或者如果您正在執行 Web 伺服器基準測試,您可能不想啟用此功能,因為處理並非是免費的。

然而,我們已努力改善原始 file(1) 的效能,以使其適合忙碌的 Web 伺服器。它設計用於有成千上萬使用者發佈自己文件的伺服器。這在內部網路中很常見。很多時候,如果伺服器可以依據檔案名稱做出比檔案名稱允許的更明智的決定,會很有用,即使只是為了減少「我的網頁為何無法運作」的呼叫,當使用者不正確地命名他們自己的檔案時。您必須決定額外的作業是否適合您的環境。

top

備註

下列備註適用於 mod_mime_magic 模組,並包含於此以符合投稿人的著作權限制,需要確認他們的著作權。

mod_mime_magic:透過文件魔法數字查詢 MIME 類型
Copyright (c) 1996-1997 Cisco Systems, Inc.

此軟體於 1997 年 7 月由 Cisco Systems 提交給 Apache Group。此原始程式碼的未來修改版本和衍生版本都必須確認 Cisco Systems 是此模組原始貢獻者。Apache Group 負責所有其他授權條款和使用條款。

其中一些程式碼衍生自最初發佈於 comp.sources.unix 的檔案指令的免費版本。該程式的著作權資訊已包含在下方,符合要求。

- Copyright (c) Ian F. Darwin, 1987. Written by Ian F. Darwin.

此軟體不受美國電話電報公司或加州大學校董會的任何授權約束。

允許任何人於任何電腦系統上基於任何目的使用此軟體,並且可以在下列限制下自由變更及重新配發:

  1. 無論有多糟糕,作者對使用此軟體的後果概不負責,即使這些後果由其缺陷所造成。
  2. 此軟體的來源不可被錯誤陳述,無論是明確聲稱或省略。由於很少使用者會閱讀原始碼,因此信用必須出現在文件說明中。
  3. 變更後的版本必須清楚標示為變更版本,且不可錯誤陳述為原始軟體。由於很少使用者會閱讀原始碼,因此信用必須出現在文件說明中。
  4. 此通知不可被移除或變更。

為了符合 Mr Darwin 的條款:這已大幅修改自免費的「檔案」指令碼。

  • 為在 Apache 各版本間移動時編譯方便而放在一個檔案中。
  • 記憶體配置是透過 Apache API 的池結構。
  • 在需要時,所有函式都傳入必要 Apache API 要求或伺服器結構,以呼叫其他 Apache API 常式程式。(也就是說,通常是為了記錄、檔案或記憶體配置本身,或是叫用函式。)
  • 結構 magic 已從陣列轉換為單端連結串列,因為一次只會增加一筆記錄,它只會順序存取,而 Apache API 沒有等同於 realloc() 的函式。
  • 已變更函式以從伺服器設定檔取得其參數,而非全域變數。(它現在應該是可重入的,但在執行緒環境中尚未測試過。)
  • 先前 used to print results to stdout 的位置,現在會將結果儲存在用於在 Apache 要求記錄中設定 MIME 類型的清單中。
  • 已經移除命令列旗標,因為這裡永遠不會使用它們。
top

MimeMagicFile 指令

說明使用指定的 magic 檔案根據檔案內容判斷 MIME 類型
語法MimeMagicFile 檔案路徑
範圍伺服器設定檔、虛擬主機
狀態擴充功能
模組mod_mime_magic

可以使用 MimeMagicFile 指令來啟用此模組,預設檔案會放在 conf/magic 中。非根目錄路徑是相對於 ServerRoot 的。虛擬主機會使用與主伺服器相同的檔案,除非使用更具體的設定,在這種情況下,更具體的設定會覆寫主伺服器的檔案。

範例

MimeMagicFile conf/magic

可用語言:  en  |  fr 

top

留言

請注意
這裡並非問答區。張貼在此的留言應著重建議改進文件或伺服器的內容,如果它們已實作或被認為無效/與主題無關,我們的仲裁者可能會移除它們。關於如何管理 Apache HTTP 伺服器的問題,應發問於我們的 IRC 頻道(於 Libera.chat 上的 #httpd),或寄到我們的 郵件清單