このモジュールは、ファイルのタイプをファイル名から決定する機能と、 ファイルにハンドラを関連付ける機能を提供します。
ステータス: 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
もまったく同じ情報にマップされます。
唯一の例外は、与えられた拡張子の扱い方を
Apache が知らない場合です。その場合、Apache は知らない拡張子の左にある
すべての拡張子を「忘れ」ます。ですから、例えば、拡張子 fr と html が適切な
言語とタイプにマップされているけれども、拡張子 xxx は何にも
割り当てられていないという場合には、welcome.fr.xxx.html
ファイルはコンテントタイプ text/html
に関連付けられますが、言語には関連付けられません。
同じメタ情報にマップされる拡張子が複数あるときには、右側にあるものが
使用されます。例えば、".gif" が MIME タイプ image/gif にマップされ、
".html" が MIME タイプ text/html にマップされる場合は、ファイル
welcome.gif.html
は MIME タイプ "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 は大文字小文字を区別せず、最初のドットはあっても なくても構いません。
参照: 複数の拡張子のあるファイル
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 ディレクティブは、
サーバがクライアントの言語の優先度に基づいて複数のドキュメントの
中からドキュメントを選ぶコンテントネゴシエーションのために
より役に立ちます。
複数の言語が同じ拡張子に割り当てられているときは、最後のものが使用されます。
すなわち、次のような場合は、
拡張子 ".en
" のあるドキュメントは "en-us
" として
扱われます。
AddLanguage en .en AddLanguage en-uk .en AddLanguage en-us .en
引数 extension は大文字小文字を区別せず、最初のドットはあっても なくても構いません。
参照: 複数の拡張子のあるファイル
参照: 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 ディレクティブが有効でなく、 ファイルに AddLanguage で設定された言語の拡張子がないときは、 ファイルには言語属性がないとみなされます。
参照: mod_negotiation
参照: 複数の拡張子のあるファイル
.htaccess
や <Directory>
セクション、
<Location>
セクションに書かれた場合、この
ディレクティブはそこにあるすべてのファイルが media type で
指定されたコンテントタイプとして扱われることを強制します。例えば、
GIF ファイルばかりのディレクトリがあって、すべてのファイルを ".gif" で
終わらせたくはないときに、以下のものを使用します:
ForceType image/gif
これは、メディアタイプを決定するかもしれないすべての拡張子を 上書きすることに注意してください。
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 に
記述します:
<Location /status> SetHandler server-status </Location>
TypesConfig conf/mime.types
TypesConfig ディレクティブは、MIME タイプ設定ファイルの位置を設定します。 filename は ServerRoot からの 相対パスです。このファイルはファイルの拡張子からコンテントタイプへの デフォルトのマッピングを設定します。このファイルを変更することは 推奨されていません。代わりに AddType ディレクティブを 使用してください。ファイルは、AddType コマンドの引数と同じ形式の行で 構成されます。
MIME-type extension extension ...
拡張子は小文字に変換されます。空行とハッシュ文字 ('#') で始まる行は 無視されます。