このモジュールは、ファイルのタイプをファイル名から決定する機能と、 ファイルにハンドラを関連付ける機能を提供します。
ステータス: Base
ソースファイル: mod_mime.c
モジュール識別子: mime_module
ディレクティブ AddCharset, AddEncoding, AddHandler, AddLanguage, AddType はすべて、 ファイルの拡張子をメタ情報にマップするために使用されます。 それぞれ、ドキュメントの文字セット (訳注: charset)、content-encoding, ハンドラ、content-language, MIME タイプ (content-type) を設定します。 ディレクティブ TypesConfig は拡張子を MIME タイプにマップするファイルを指定するために使用されます。 ディレクティブ ForceType と SetHandler は、与えられた場所 (例えば、特定のディレクトリ) にあるすべてのファイルを特定の MIME タイプやハンドラに関連付けるために使用されます。
ファイルのタイプやエンコーディングを変えても Last-Modified
ヘッダの値は変わらないことに注意してください。ですから、
それらを変更した場合は、クライアントやプロキシで以前にキャッシュされた
コピーがそのときのヘッダとともに使われる可能性があります。
参照: MimeMagicFile
ファイルは複数の拡張子を持つことができ、拡張子の順番は通常は関係ありません。たとえば、welcome.html.fr
ファイルがコンテントタイプは text/html
に、言語はフランス語にマップされる場合、welcome.fr.html
もまったく同じ情報にマップされます。
同じメタ情報にマップされる拡張子が複数あるときには言語とコンテントエンコーディングを除いて、
右側にあるものが使用されます。たとえば、".gif" が MIME タイプ
image/gif にマップされ、".html" が MIME タイプ text/html
にマップされる場合は、ファイル welcome.gif.html
は
MIME タイプ "text/html" に関連付けられます。
言語とコンテントエンコーディングはそれまでのものに追加して扱われます。
これは特定のリソースに対して一つ以上の言語やエンコーディングを
割り当てることができるからです。例えば、ファイル
welcome.html.en.de
が Content-Language: en, de
で Content-Type: text/html
といった具合です。
複数の拡張子のあるファイルが MIME
タイプとハンドラの両方に関連付けられているときは注意する必要があります。
その場合、普通はリクエストがハンドラに関連付けられた
モジュールによって扱われることになります。たとえば、拡張子
.imap
が (mod_imap の) "imap-file" にマップされていて、
.html
が MIME タイプ "text/html"
にマップされているときは、ファイル world.imap.html
は
"imap-file" ハンドラと "text/html" MIME
タイプに関連付けられます。ファイルが処理されるときは "imap-file"
ハンドラが使用されますので、そのファイルは mod_imap
のイメージマップファイルとして扱われることになります。
AddCharset ディレクティブは、与えられた拡張子を指定された charset にマップします。charset は、拡張子 extension を含んでいるファイル名の MIME charset パラメータです。新しいマッピングは既にあるものに追加され、同じ拡張子 extension のために既に存在するマッピングを上書きします。
例:
AddLanguage ja .ja AddCharset EUC-JP .euc AddCharset ISO-2022-JP .jis AddCharset SHIFT_JIS .sjis
この場合、ドキュメント xxxx.ja.jis
は charset が
ISO-2022-JP の日本語のドキュメントとして扱われます
(xxxx.jis.ja
も同様)。AddCharset
ディレクティブは、ドキュメントが適切に解釈され表示されるように、
ドキュメントの charset の情報をクライアントに教えるために役に立ちます。
また、サーバがクライアントの charset
の優先度に基づいて複数のドキュメントの中からドキュメントを選ぶコンテントネゴシエーションのためにも役に立ちます。
引数 extensionは大文字小文字を区別せず、 最初のドットはあってもなくても構いません。
参照: mod_negotiation
AddEncoding ディレクティブは、与えられた拡張子を指定された エンコーディングにマップします。MIME-enc は、拡張子 extension を含んだドキュメントに使用する MIME エンコーディングです。この新しいマッピングは既にあるものに追加され、 同じ拡張子 extension のために既に存在するマッピングを上書きします。例:
AddEncoding x-gzip .gz
AddEncoding x-compress .Z
これは、拡張子 .gz を含むファイル名が x-gzip
エンコーディングを使ってエンコードされていることと、拡張子 .Z
を含むファイル名が x-compress
でエンコードされていることを示します。
古いクライアントは x-zip
と x-compress
が返ってくることを期待しますが、標準規格ではそれぞれ
gzip
と compress
と等価であることになっています。Apache
は、コンテントエンコーディングの比較をするときには、先頭にある
x-
を無視します。Apache
がエンコーディング付きで応答を返すときは、クライアントが要求した形式
(すなわち、x-foo
や foo
)
を使用します。要するに、この二つのエンコーディングの場合は常に
x-gzip
と x-compress
を使うべきである、ということです。deflate
のようなより新しいエンコーディングでは、x-
なしで指定してください。
引数 extension は大文字小文字を区別せず、 最初のドットはあってもなくても構いません。
参照: 複数の拡張子のあるファイル
AddHandler は、拡張子 extension をハンドラ handler-name
にマップします。この新しいマッピングは既にあるものに追加され、
同じ拡張子 extension
のために既に存在するマッピングを上書きします。たとえば、拡張子
".cgi
" で終わるファイルを CGI
スクリプトとして扱いたいときは、以下の設定をします。
AddHandler cgi-script .cgi
これを srm.conf か httpd.conf ファイルに記述することで、拡張子
".cgi
" を含むファイルは CGI プログラムとして扱われます。
引数 extension は大文字小文字を区別せず、 最初のドットはあってもなくても構いません。
参照: 複数の拡張子のあるファイル、 SetHandler
AddLanguage ディレクティブは、与えられた拡張子を指定された content language にマップします。MIME-lang は、拡張子 extension を含んでいるファイル名の MIME における言語です。 この新しいマッピングは既にあるものに追加され、同じ拡張子 extension のために既に存在するマッピングを上書きします。
例:
AddEncoding x-compress .Z
AddLanguage en .en
AddLanguage fr .fr
この場合、xxxx.en.Z
ドキュメントは compress
された英語のドキュメントとして扱われます (xxxx.Z.en
も同様)。content language はクライアントに通知されますが、
ブラウザがこの情報を使うことはおそらくありません。AddLanguage
ディレクティブは、サーバがクライアントの言語の優先度に基づいて複数の
ドキュメントの中からドキュメントを選ぶコンテントネゴシエーションのためにより役に立ちます。
複数の言語が同じ拡張子に割り当てられているときは、 最後のものが使用されます。すなわち、次のような場合、
AddLanguage en .en AddLanguage en-gb .en AddLanguage en-us .en
拡張子 ".en
" のあるドキュメントは
"en-us
" として扱われます。
引数 extension は大文字小文字を区別せず、 最初のドットはあってもなくても構いません。
参照: 複数の拡張子のあるファイル、
DefaultLanguage
参照: mod_negotiation
AddType ディレクティブは、
与えられた拡張子を指定されたコンテントタイプにマップします。
MIME-type は拡張子 extension
を含んだドキュメントに使用する MIME タイプです。
この新しいマッピングは既にあるものに追加され、同じ拡張子
extension のために既に存在するマッピングを上書きします。
このディレクティブは MIME タイプファイル (TypesConfig
ディレクティブを参照)
にないマッピングを追加するために使用することができます。例:
AddType image/gif .gif
新しい MIME タイプは、TypesConfig
ファイルを変更するのではなく、AddType
ディレクティブを使って追加することが推奨されています。
NCSA httpd とは違って、このディレクティブは特定のファイルの タイプを設定することはできないことに注意してください。
引数 extension は大文字小文字を区別せず、 最初のドットはあってもなくても構いません。
参照: 複数の拡張子のあるファイル
DefaultLanguage ディレクティブは、Apache
がディレクティブのスコープ (例えば、その時点の
<Directory>
の範囲) にある、明示的な言語拡張子
(AddLanguage で設定される .fr や
.de) のない全てのファイルを、指定された
MIME-lang 言語であるとみなすようにします。
これにより、すべてのファイル名を変えることなく、
ディレクトリがオランダ語のコンテントを含んでいる、
というようなことを指定することができます。
拡張子を使用して言語を指定する方法と違い、
DefaultLanguage
は一つの言語しか指定できないことに注意してください。
例えば:
DefaultLanguage fr
DefaultLanguage ディレクティブが有効でなく、ファイルに AddLanguage で設定された言語の拡張子がないときは、 ファイルには言語属性がないとみなされます。
参照: mod_negotiation
参照: 複数の拡張子のあるファイル
.htaccess
や <Directory>
セクション、<Location>
セクションに書かれた場合、
このディレクティブはそこにあるすべてのファイルが media type
で指定されたコンテントタイプとして扱われることを強制します。たとえば、
GIF ファイルばかりのディレクトリがあって、すべてのファイルを ".gif"
で終わらせたくはないときに、以下のものを使用します:
ForceType image/gif
これは、メディアタイプを決定するかもしれないすべての拡張子を 上書きすることに注意してください。
値を none
に設定することで、
以前の
# force all files to be image/gif: <Location /images> ForceType image/gif </Location> # but normal mime-type associations here: <Location /images/mixed> ForceType none </Location>
参照: AddType
RemoveEncoding ディレクティブは、
与えられた拡張子に関連付けられたエンコーディングを取り消します。
これにより、サブディレクトリにある .htaccess
ファイルが親ディレクトリやサーバの設定ファイルから継承した関連付けを
取り消すことができます。たとえば:
/foo/.htaccess:
AddEncoding x-gzip .gz
AddType text/plain .asc
<Files *.gz.asc>
RemoveEncoding
.gz
</Files>
これは、foo.gz
は gzip
でエンコードされていることを指定しますが、foo.gz.asc
はエンコードされていないプレーンテキストの
ファイルであるということを指定します。
注意: RemoveEncoding は AddEncoding ディレクティブの後で処理されますので、 同じディレクトリの設定中に両方が現れると、 後者の効果が打ち消される可能性があります。
引数 extension は大文字小文字を区別せず、 最初のドットはあってもなくても構いません。
RemoveHandler ディレクティブ
は与えられた拡張子に関連付けられたハンドラを取り消します。
これにより、サブディレクトリにある .htaccess
ファイルが親ディレクトリやサーバの設定ファイル
から継承した関連付けを取り消すことができます。たとえば:
/foo/.htaccess:
AddHandler server-parsed .html
/foo/bar/.htaccess:
RemoveHandler .html
これは、/foo/bar ディレクトリの .html ファイルは SSI ではなく (mod_include モジュール参照)、 普通のファイルとして扱われるようにする効果があります。
引数 extension は大文字小文字を区別せず、 最初のドットはあってもなくても構いません。
RemoveType ディレクティブは与えられた拡張子の
MIME タイプの関連付けを取り消します。これにより、
サブディレクトリにある .htaccess
ファイルが親ディレクトリやサーバの設定ファイルから継承した
関連付けを取り消すことができます。たとえば:
/foo/.htaccess:
RemoveType .cgi
これは /foo/
ディレクトリ以下の .cgi
ファイルの特別な扱いを取り消します。ファイルはデフォルトタイプとして扱われます。
注意: RemoveType
ディレクティブは
AddType
ディレクティブの後に処理されますので、
両方が同じディレクトリの設定中に現れた場合、
後者の効果が打ち消される可能性があります。
引数 extension は大文字小文字を区別せず、 最初のドットはあってもなくても構いません。
.htaccess
や <Directory>
セクション、<Location>
セクションに書かれた場合、
このディレクティブはそこにあるすべてのファイルが
handler-name で指定されたハンドラで扱われることを強制します。例えば、拡張子に関わらず、
ディレクトリ全体がイメージマップファイルとして解析して欲しい場合には、
以下をそのディレクトリの .htaccess
ファイルに記述します:
SetHandler imap-file
別の例: URL http://servername/status
が指定されたときにサーバが状態報告をするようにしたいときは、以下を
httpd.conf に記述します: (詳細は mod_status を参照。)
<Location /status> SetHandler server-status </Location>
値を None
にすることで、
以前の SetHandler
ディレクティブの定義を上書きすることが
できます。
参照: AddHandler
TypesConfig
conf/mime.types
TypesConfig ディレクティブは、MIME タイプ設定ファイルの位置を設定します。filename は ServerRoot からの相対パスです。 このファイルはファイルの拡張子からコンテントタイプへの デフォルトのマッピングを設定します。 このファイルを変更することは推奨されていません。代わりに AddType ディレクティブを使用してください。 ファイルは、AddType コマンドの引数と同じ形式の行で構成されます。
MIME-type extension extension ...拡張子は小文字に変換されます。空行とハッシュ文字 ('#') で始まる行は無視されます。