このモジュールは拡張子を使っていろいろな「メタ情報」をファイルに
関連付けるために使用されます。この情報はドキュメントのファイル名と
MIME タイプ、言語、文字セット、エンコーディングとを関連付けます。
この情報はブラウザに送られますし、複数のファイルの中からユーザの好みの
ものが選ばれるように、コンテントネゴシエーションでも使われます。
コンテントネゴシエーション
に関する詳しい情報は
さらに、
ファイルのメタ情報を変えても Last-Modified
ヘッダの値は変わらないことに注意してください。ですから、
それらを変更した場合は、クライアントやプロキシで以前にキャッシュされた
コピーがそのときのヘッダとともに使われる可能性があります。
メタ情報 (言語、コンテントタイプ、文字セット、エンコーディング) を
変更したときは、すべての訪問者が正しいコンテントヘッダを
受け取るように、影響を受けるファイルに 'touch' コマンドを実行する
(最終更新日を更新する) 必要があるかもしれません。
ファイルは複数の拡張子を持つことができ、拡張子の順番は通常は関係ありません。例えば、ファイル 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
が (imap-file
にマップされていて、.html
が MIME タイプ text/html
にマップされているときは、ファイル world.imap.html
は
imap-file
ハンドラと text/html
MIME
タイプに関連付けられます。ファイルが処理されるときは imap-file
ハンドラが使用されますので、そのファイルは
特定の MIME タイプのファイルはインターネットでの転送を簡単にするために、
さらに符号化することができます。これは通常は gzip
の
ような圧縮のことを指しますが、pgp
のような暗号化や、
バイナリファイルを ASCII (テキスト) 形式で送るために考案された
UUencoding のことを指すこともあります。
HTTP/1.1 RFC 14.11 節では次のように記述されています。
Content-Encoding エンティティヘッダフィールドはメディアタイプの 修飾子として使われます。それが存在していれば、値はエンティティボディに どの追加の符号化が適用されたかを示し、Content-Type ヘッダフィールドに 書かれているメディアタイプを得るためにどの復号機構を適用すべきか、も 示していることになります。Content-Encoding は主に、元のメディアタイプの 同一性を失うことなくドキュメントを圧縮することを可能にするために 使用されます。
複数のファイル拡張子 (複数の拡張子については 上の節 を参照) 使うことで、 ファイルのタイプやエンコーディングを指定することが できます。
たとえば、Microsoft Word のドキュメントがあり、サイズを小さくするために
pkzip されているとします。.doc
拡張子が Microsoft Word の
ファイルタイプと関連付けられていて、.zip
拡張子が
pkzip ファイルエンコーディングと関連付けられていると、ファイル
Resume.doc.zip
は pkzip された Word ドキュメントである
ということがわかります。
クライアントのブラウザにエンコーディング方法を知らせるために、
Apache はリソースと共に Content-Encoding
ヘッダを
送ります。
ファイルタイプとファイルエンコーディングの他に重要な情報は ドキュメントの書かれている言語と、どの文字セットでファイルが表示 されるべきか、というものです。たとえば、ドキュメントはベトナムの アルファベットやキリル文字で書かれていて、そのように表示される 必要があるかもしれません。この情報もまた、HTTP ヘッダで 送信されます。
文字セット、言語、エンコーディング、mime タイプはすべて
コンテントネゴシエーション (
さらに情報を伝えるために、Apache は文書の言語を
Content-Language
ヘッダで送ることもあります。
また、情報を正しく表示するために使用すべき文字セットを示すために
Conten-Type
ヘッダに情報を追加することもあります。
言語の指定は二文字の短縮形で行なわれます。charset
が
使用すべき文字セットの名前です。
この場合、ドキュメント xxxx.ja.jis
は charset が
ISO-2022-JP
の日本語のドキュメントとして扱われます
(xxxx.jis.ja
も同様)。
引数 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 は大文字小文字を区別せず、 最初のドットはあってもなくても構いません。
拡張子 extension が名前にあるファイルは指定された handler-name に扱われます。
この新しいマッピングは既にある他のマッピングに追加され、
同じ拡張子 extension
のためのマッピングを上書きします。たとえば、拡張子
".cgi
" で終わるファイルを CGI
スクリプトとして扱いたいときは、以下の設定をします。
これを httpd.conf ファイルに記述することで、拡張子
".cgi
" のファイルは CGI プログラムとして扱われます。
引数 extension は大文字小文字を区別せず、 最初のドットはあってもなくても構いません。
複数のフィルタを指定するときは、データを処理する順番にセミコロンで 繋いで書く必要があります。フィルタと extension との 両方の引数は大文字小文字を区別せず、拡張子の最初のドットは あってもなくても構いません。
この場合、xxxx.en.Z
ドキュメントは compress
された英語のドキュメントとして扱われます (xxxx.Z.en
も同様)。content language はクライアントに通知されますが、
ブラウザがこの情報を使うことはおそらくありません。
複数の言語が同じ拡張子に割り当てられているときは、 最後のものが使用されます。すなわち、次のような場合、
拡張子 .en
のあるドキュメントは
en-us
として扱われます。
引数 extension は大文字小文字を区別せず、 最初のドットはあってもなくても構いません。
例えば、以下の設定はすべての .shtml
ファイルを SSI で処理し、
その出力を
複数のフィルタを指定するときは、データを処理する順番にセミコロンで 繋いで書く必要があります。filter と extension の 両引数は大文字小文字を区別せず、拡張子の最初のドットは あってもなくても構いません。
引数 extension は大文字小文字を区別せず、 最初のドットはあってもなくても構いません。
index.html
)
に対するリクエストに対して、ネゴシエーションする拡張子がベースに付いたもの
(index.html.en
, index.html.fr
や
index.html.gz
)
をマッチさせることができます。
NegotiatedOnly
オプションでは、ベース名に続く拡張子全てが
コンテントネゴシエーションで
ハンドラとフィルタの両方もしくは片方と関連付けられた拡張子を含めるには、
Handlers
,
Filters
またはその両方のオプションをセットします。
もし他の条件が同じであれば、最も小さいファイルが送信されます。
例えば、500 文字の index.html.cgi
と 1000 バイトの
index.html.pl
であれば、.cgi
のファイルが優先されます。.asis
ファイルを利用しているユーザは、
.asis
ファイルが asis-handler
に関連付けられているときには、
ハンドラオプションの使用を好むでしょう。
最後に、Any
が使用できます。
この挙動は Apache 1.3 のときと同じもので、予期しない動作、例えば .old
や
.bak
ファイルといったウェブマスタが送信を意図していない
ファイルを送信する、といった動作を行なう可能性があります。
例えば次の設定では、ハンドラやフィルタが Multiviews に参加することが できますし、未知のファイルは除外することができます。
.fr
や .de
) のない全てのファイルを、指定された
MIME-lang 言語であるとみなすようにします。
これにより、すべてのファイル名を変えることなく、
ディレクトリがオランダ語のコンテントを含んでいる、
というようなことを指定することができます。
拡張子を使用して言語を指定する方法と違い、
path_info
コンポーネントをファイル名の一部として扱うように
path_info
URL
コンポーネントを結合させるために使用します。
デフォルトでは「 Off
」で、path_info
コンポーネントは無視されます。
このディレクティブは、バーチャルファイルシステムを使用している際に 推奨されるディレクティブです。
/bar
が存在して (foo.shtml は存在しない)
On
であるとして、
/bar/foo.shtml
に対するリクエストを発行した場合、
/bar/foo.shtml
として扱い、
AddOutputFileter INCLUDES .shtml
のようなディレクティブは
INCLUDES
フィルタをリクエストに付加させます。
INCLUDES
フィルタは付加されません。
.htaccess
ファイルが親ディレクトリやサーバの設定ファイル
から継承した関連付けを取り消すことができます。例えば:
extension は大文字小文字を区別しません。 また、最初のドットはあってもなくても構いません。
.htaccess
ファイルが親ディレクトリやサーバの設定ファイルから継承した関連付けを
取り消すことができます。
これは、foo.gz
は gzip
でエンコードされていることを指定しますが、foo.gz.asc
はエンコードされていないプレーンテキストの
ファイルであるということを指定します。
extension は大文字小文字を区別しません。 また、最初のドットはあってもなくても構いません。
.htaccess
ファイルが親ディレクトリやサーバの設定ファイル
から継承した関連付けを取り消すことができます。たとえば:
これは、/foo/bar
ディレクトリの .html
ファイルは SSI (
extension は大文字小文字を区別しません。 また、最初のドットはあってもなくても構いません。
.htaccess
ファイルで取り消すことができます。
extension 引数は大文字小文字を区別しません。また、 最初のドットはあってもなくても構いません。
.htaccess
ファイルで取り消すことができます。
extension 引数は大文字小文字を区別しません。また、 最初のドットはついてもつかなくても構いません。
.htaccess
ファイルで取り消すことができます。
extension は大文字小文字を区別しません。 また、最初のドットはあってもなくても構いません。
.htaccess
ファイルが親ディレクトリやサーバの設定ファイルから継承した
関連付けを取り消すことができます。たとえば:
これは /foo/
ディレクトリ以下の .cgi
ファイルの特別な扱いを取り消します。ファイルは
extension は大文字小文字を区別しません。 また、最初のドットはあってもなくても構いません。
mime.types
ファイルの位置mime.types
ファイルを使います。
現在の一覧は http://www.iana.org/assignments/media-types/index.html
で管理されています。これは、主要なメディアタイプの定義を提供して、
必要ところを httpd.conf
を簡略にします。
mime.types
はサーバをアップグレードしたときに
置き換えられるかもしれないので、そのファイルを直接
編集しないでください。
ファイルは、
拡張子の大文字小文字は区別されません。空行やハッシュ (`#') で始まる行は無視されます。
mime.types
ファイルに新たなものを登録するように
Apache HTTP Server Project にリクエストしないでください。
category/x-subtype
のリクエストは自動的に却下されますし、
言語や文字セットの名前空間で既に使用されていて、衝突の可能性のある
2 文字の拡張子も却下されます。