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 は大文字小文字を区別せず、 最初のドットはあってもなくても構いません。

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

## 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 ディレクティブは、サーバがクライアントの言語の優先度に基づいて複数の ドキュメントの中からドキュメントを選ぶコンテントネゴシエーションのためにより役に立ちます。

複数の言語が同じ拡張子に割り当てられているときは、 最後のものが使用されます。すなわち、次のような場合、

        AddLanguage en .en
        AddLanguage en-uk .en
        AddLanguage en-us .en

拡張子 "`.en`" のあるドキュメントは "`en-us`" として扱われます。

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

参照: 複数の拡張子のあるファイル、 DefaultLanguage
参照: 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 fr`

`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

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

参照: AddType

## 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 に記述します: (詳細は mod_status を参照。)

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

参照: AddHandler

## 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