Apache module mod_mime

### Apache HTTP Server Version 1.3

# mod_mime モジュール

このモジュールは、ファイルのタイプをファイル名から決定する機能と、 ファイルにハンドラを関連付ける機能を提供します。

ステータス: 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` ヘッダの値は変わらないことに注意してください。ですから、 それらを変更した場合は、クライアントやプロキシで以前にキャッシュされた コピーがそのときのヘッダとともに使われる可能性があります。

## ディレクティブ

- AddCharset
- AddEncoding
- AddHandler
- AddLanguage
- AddType
- DefaultLanguage
- ForceType
- RemoveEncoding
- RemoveHandler
- RemoveType
- SetHandler
- TypesConfig

参照: 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 ディレクティブ

構文: AddCharset charset extension [extension] ...
コンテキスト: サーバ設定ファイル、バーチャルホスト、 ディレクトリ、.htaccess
上書き: FileInfo
ステータス: Base
モジュール: mod_mime
互換性: AddCharset は Apache 1.3.10 以降でのみ使用可能。

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 ディレクティブ

構文: AddEncoding MIME-enc extension [extension] ...
コンテキスト: サーバ設定ファイル、バーチャルホスト、 ディレクトリ、.htaccess
上書き: FileInfo
ステータス: Base
モジュール: mod_mime

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 ディレクティブ

構文: AddHandler handler-name extension [extension] ...
コンテキスト: サーバ設定ファイル、バーチャルホスト、 ディレクトリ、.htaccess
上書き: FileInfo
ステータス: Base
モジュール: mod_mime
互換性: AddHandler は Apache 1.1 以降でのみ使用可能。

AddHandler は、拡張子 extension を ハンドラ handler-name にマップします。 この新しいマッピングは既にあるものに追加され、同じ拡張子 extension のために既に存在するマッピングを上書きします。

例えば、拡張子 "`.cgi`" で終わるファイルを CGI スクリプトとして 扱いたいときは、以下の設定をします。

        AddHandler cgi-script .cgi

これを srm.conf か httpd.conf ファイルに記述することで、拡張子 "`.cgi`" を 含むファイルは CGI プログラムとして扱われます。

引数 extension は大文字小文字を区別せず、最初のドットはあっても なくても構いません。

参照: 複数の拡張子のあるファイル

## AddLanguage ディレクティブ

構文: AddLanguage MIME-lang extension [extension] ...
コンテキスト: サーバ設定ファイル、バーチャルホスト、 ディレクトリ、.htaccess
上書き: FileInfo
ステータス: Base
モジュール: mod_mime

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 ディレクティブ

構文: AddType MIME-type extension [extension] ...
コンテキスト: サーバ設定ファイル、バーチャルホスト、 ディレクトリ、.htaccess
上書き: FileInfo
ステータス: Base
モジュール: mod_mime

AddType ディレクティブは、与えられた拡張子を指定された コンテントタイプにマップします。MIME-type は拡張子 extension を含んだドキュメントに使用する MIME タイプです。 この新しいマッピングは既にあるものに追加され、同じ拡張子 extension のために既に存在するマッピングを上書きします。このディレクティブは MIME タイプファイル (`TypesConfig` ディレクティブを参照) に ないマッピングを追加するために使用することができます。

例:

        AddType image/gif .gif

新しい MIME タイプは、TypesConfig ファイルを 変更するのではなく、AddType ディレクティブを使って追加することが 推奨されています。

NCSA httpd とは違って、このディレクティブは特定のファイルのタイプを 設定することはできないことに注意してください。

引数 extension は大文字小文字を区別せず、最初のドットはあっても なくても構いません。

参照: 複数の拡張子のあるファイル

## DefaultLanguage ディレクティブ

構文: DefaultLanguage MIME-lang
コンテキスト: サーバ設定ファイル、バーチャルホスト、 ディレクトリ、.htaccess
上書き: FileInfo
ステータス: Base
モジュール: mod_mime
互換性: DefaultLanguage は Apache 1.3.4 以降でのみ 使用可能。

DefaultLanguage ディレクティブは、Apache がディレクティブのスコープ (例えば、その時点の `<Directory>` の 範囲) にある、明示的な言語拡張子 (`AddLanguage` で設定される `.fr` や `.de`) のない全てのファイルを、 指定された MIME-lang 言語であるとみなすようにします。 これにより、すべてのファイル名を変えることなく、ディレクトリが オランダ語のコンテントを含んでいる、というようなことを 指定することができます。 拡張子を使用して言語を指定する方法と違い、`DefaultLanguage` は一つの言語しか指定できないことに注意してください。

`DefaultLanguage` ディレクティブが有効でなく、 ファイルに `AddLanguage` で設定された言語の拡張子がないときは、 ファイルには言語属性がないとみなされます。

参照: mod_negotiation
参照: 複数の拡張子のあるファイル

## ForceType ディレクティブ

構文: ForceType media-type
コンテキスト: ディレクトリ、.htaccess
ステータス: Base
モジュール: mod_mime
互換性: ForceType は Apache 1.1 以降でのみ使用可能。

`.htaccess` や `<Directory>` セクション、 `<Location>` セクションに書かれた場合、この ディレクティブはそこにあるすべてのファイルが media type で 指定されたコンテントタイプとして扱われることを強制します。例えば、 GIF ファイルばかりのディレクトリがあって、すべてのファイルを ".gif" で 終わらせたくはないときに、以下のものを使用します:

        ForceType image/gif

これは、メディアタイプを決定するかもしれないすべての拡張子を 上書きすることに注意してください。

## RemoveEncoding ディレクティブ

構文: RemoveEncoding extension [extension] ...
コンテキスト: ディレクトリ、.htaccess
ステータス: Base
モジュール: mod_mime
互換性: RemoveEncoding は Apache 1.3.13 以降でのみ 使用可能。

`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 ディレクティブ

構文: RemoveHandler extension [extension] ...
コンテキスト: ディレクトリ、.htaccess
ステータス: Base
モジュール: mod_mime
互換性: RemoveHandler は Apache 1.3.4 以降でのみ 使用可能。

`RemoveHandler` ディレクティブは与えられた拡張子に 関連付けられたハンドラを取り消します。これにより、 サブディレクトリにある `.htaccess` ファイルが親ディレクトリや サーバの設定ファイルから継承した関連付けを取り消すことができます。 例えば:

`/foo/.htaccess:`
  `addhandler server-parsed .html`
`/foo/bar/.htaccess:`
  `removehandler .html`

これは、`/foo/bar` ディレクトリの `.html` ファイルは SSI ではなく (`mod_include` モジュール参照)、普通のファイルとして扱われるようにする効果があります。

引数 extension は大文字小文字を区別せず、最初のドットはあっても なくても構いません。

## RemoveType ディレクティブ

構文: RemoveType extension [extension] ...
コンテキスト: ディレクトリ、.htaccess
ステータス: Base
モジュール: mod_mime
互換性: RemoveType は Apache 1.3.13 以降でのみ 使用可能。

`RemoveType` ディレクティブは与えられた拡張子の MIME タイプの関連付けを取り消します。これにより、 サブディレクトリにある `.htaccess` ファイルが親ディレクトリや サーバの設定ファイルから継承した関連付けを取り消すことができます。 例えば:

`/foo/.htaccess:`
  `RemoveType .cgi`

これは `/foo/` ディレクトリ以下の `.cgi` ファイルの 特別な扱いを取り消します。ファイルはデフォルトタイプとして扱われます。

注意: `RemoveType` ディレクティブは `AddType` ディレクティブの後に処理されますので、 両方が同じディレクトリの設定中に現れた場合、後者の効果が打ち消される 可能性があります。

引数 extension は大文字小文字を区別せず、最初のドットはあっても なくても構いません。

## SetHandler ディレクティブ

構文: SetHandler handler-name
コンテキスト: ディレクトリ、.htaccess
ステータス: Base
モジュール: mod_mime
互換性: SetHandler は Apache 1.1 以降でのみ使用可能。

`.htaccess` や `<Directory>` セクション、 `<Location>` セクションに書かれた場合、この ディレクティブはそこにあるすべてのファイルが handler-name で 指定されたハンドラで扱われることを 強制します。例えば、拡張子に関わらず、ディレクトリ全体が イメージマップファイルとして解析して欲しい場合には、以下を そのディレクトリの `.htaccess` ファイルに記述します:

        SetHandler imap-file

別の例: URL `http://servername/status` が指定されたときに サーバが状態報告をするようにしたいときは、以下を httpd.conf に 記述します:

        <Location /status>
        SetHandler server-status
        </Location>

## TypesConfig ディレクティブ

構文: TypesConfig filename
デフォルト: `TypesConfig conf/mime.types`
コンテキスト: サーバ設定ファイル
ステータス: Base
モジュール: mod_mime

TypesConfig ディレクティブは、MIME タイプ設定ファイルの位置を設定します。 filename は ServerRoot からの 相対パスです。このファイルはファイルの拡張子からコンテントタイプへの デフォルトのマッピングを設定します。このファイルを変更することは 推奨されていません。代わりに AddType ディレクティブを 使用してください。ファイルは、AddType コマンドの引数と同じ形式の行で 構成されます。

> MIME-type extension extension ...

拡張子は小文字に変換されます。空行とハッシュ文字 ('#') で始まる行は 無視されます。

### Apache HTTP Server Version 1.3