このモジュールは拡張子を使っていろいろな「メタ情報」をファイルに
関連付けるために使用されます。この情報はドキュメントのファイル名と
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" に関連付けられます。
複数の拡張子のあるファイルが MIME
タイプとハンドラの両方に関連付けられているときは注意する必要があります。
その場合、普通はリクエストがハンドラに関連付けられた
モジュールによって扱われることになります。たとえば、拡張子
.imap
が (mod_imap の) "imap-file" にマップされていて、
.html
が MIME タイプ "text/html"
にマップされているときは、ファイル world.imap.html
は
"imap-file" ハンドラと "text/html" MIME
タイプに関連付けられます。ファイルが処理されるときは "imap-file"
ハンドラが使用されますので、そのファイルは mod_imap
のイメージマップファイルとして扱われることになります。
特定の MIME タイプのファイルはインターネットでの転送を簡単にするために、
さらに符号化することができます。これは通常は gzip
の
ような圧縮のことを指しますが、pgp
のような暗号化や、
バイナリファイルを ASCII (テキスト) 形式で送るために考案された
UUencoding のことを指すこともあります。
MIME RFC は次のように言っています:
複数のファイル拡張子 (複数の拡張子については 上の節 を参照) 使うことで、 ファイルのタイプやエンコーディングを指定することが できます。
たとえば、Microsoft Word のドキュメントがあり、サイズを小さくするために
pkzip されているとします。.doc
拡張子が Microsoft Word の
ファイルタイプと関連付けられていて、.zip
拡張子が
pkzip ファイルエンコーディングと関連付けられていると、ファイル
Resume.doc.zip
は pkzip された Word ドキュメントである
ということがわかります。
クライアントのブラウザにエンコーディング方法を知らせるために、
Apache はリソースと共に Content-Encoding
ヘッダを
送ります。
ファイルタイプとファイルエンコーディングの他に重要な情報は ドキュメントの書かれている言語と、どの文字セットでファイルが表示 されるべきか、というものです。たとえば、ドキュメントはベトナムの アルファベットやキリル文字で書かれていて、そのように表示される 必要があるかもしれません。この情報もまた、HTTP ヘッダで 送信されます。
文字セット、言語、エンコーディング、mime タイプはすべて
コンテントネゴシエーション (
さらに情報を伝えるために、Apache は文書の言語を
Content-Language
ヘッダで送ることもあります。
また、情報を正しく表示するために使用すべき文字セットを示すために
Conten-Type
ヘッダに情報を追加することもあります。
言語の指定は二文字の短縮形で行なわれます。charset
が
使用すべき文字セットの名前です。
AddCharset ディレクティブは、与えられた拡張子を指定された charset にマップします。charset は、拡張子 extension を含んでいるファイル名の MIME charset パラメータです。新しいマッピングは既にある他のマッピングに追加され、同じ拡張子 extension のためのマッピングを上書きします。
例:
この場合、ドキュメント xxxx.ja.jis
は charset が
ISO-2022-JP の日本語のドキュメントとして扱われます
(xxxx.jis.ja
も同様)。AddCharset
ディレクティブは、ドキュメントが適切に解釈され表示されるように、
ドキュメントの charset の情報をクライアントに教えるために役に立ちます。
また、サーバがクライアントの charset
の優先度に基づいて複数のドキュメントの中からドキュメントを選ぶコンテントネゴシエーションのためにも役に立ちます。
引数 extensionは大文字小文字を区別せず、 最初のドットはあってもなくても構いません。
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 は大文字小文字を区別せず、 最初のドットはあってもなくても構いません。
拡張子 extension が名前にあるファイルは指定された handler-name に扱われます。
この新しいマッピングは既にある他のマッピングに追加され、
同じ拡張子 extension
のためのマッピングを上書きします。たとえば、拡張子
".cgi
" で終わるファイルを CGI
スクリプトとして扱いたいときは、以下の設定をします。
これを srm.conf か httpd.conf ファイルに記述することで、拡張子
".cgi
" を含むファイルは CGI プログラムとして扱われます。
引数 extension は大文字小文字を区別せず、 最初のドットはあってもなくても構いません。
AddInputFilter はファイルの拡張子 extension を クライアントのリクエストや POST がサーバに来たときに 処理をするフィルタにマップします。 これは、SetInputFilter ディレクティブも 含め、他の場所で定義されているフィルタに加えられます。 このマッピングはすでにあるものより優先されてマージされ、 同じ extension に対する既存のマッピングを上書きします。
複数のフィルタを指定するときは、データを処理する順番にセミコロンで 繋いで書く必要があります。フィルタと extension との 両方の引数は大文字小文字を区別せず、拡張子の最初のドットは あってもなくても構いません。
AddLanguage ディレクティブは、与えられた拡張子を指定された content language にマップします。MIME-lang は、拡張子 extension を含んでいるファイル名の MIME における言語です。 この新しいマッピングは既にあるマッピングに追加され、同じ拡張子 extension のためのマッピングを上書きします。
例:
この場合、xxxx.en.Z
ドキュメントは compress
された英語のドキュメントとして扱われます (xxxx.Z.en
も同様)。content language はクライアントに通知されますが、
ブラウザがこの情報を使うことはおそらくありません。AddLanguage
ディレクティブは、サーバがクライアントの言語の優先度に基づいて複数の
ドキュメントの中からドキュメントを選ぶコンテントネゴシエーションのためにより役に立ちます。
複数の言語が同じ拡張子に割り当てられているときは、 最後のものが使用されます。すなわち、次のような場合、
拡張子 ".en
" のあるドキュメントは
"en-us
" として扱われます。
引数 extension は大文字小文字を区別せず、 最初のドットはあってもなくても構いません。
例えば、以下の設定はすべての .shtml ファイルを SSI で処理し、
その出力を
複数のフィルタを指定するときは、データを処理する順番にセミコロンで 繋いで書く必要があります。フィルタと extension との 両方の引数は大文字小文字を区別せず、拡張子の最初のドットは あってもなくても構いません。
AddType ディレクティブは、
与えられた拡張子を指定されたコンテントタイプにマップします。
MIME-type は拡張子 extension
を含んだドキュメントに使用する MIME タイプです。
この新しいマッピングは既にあるマッピングに追加され、同じ拡張子
extension のためのマッピングを上書きします。
このディレクティブは MIME タイプファイル (
例:
新しい MIME タイプは、
引数 extension は大文字小文字を区別せず、 最初のドットはあってもなくても構いません。
NegotiatedOnly オプションでは、ベース名に続く拡張子全てが
コンテントネゴシエーションで
ハンドラとフィルタの両方もしくは片方と関連付けられた拡張子を含めるには、
index.html.cgi
と 1000 バイトの
index.html.pl
であれば、.cgi
のファイルが優先されます。.asis
ファイルを利用しているユーザは、
.asis
ファイルが asis ハンドラに関連付けられているときには、
Handler オプションの使用を好むでしょう。
最後に、.old
や
.bak
ファイルといったウェブマスタが送信を意図していない
ファイルを送信する、といった動作を行なう可能性があります。
例えば次の設定では、ハンドラやフィルタが Multiviews に参加することが できますし、未知のファイルは除外することができます。
DefaultLanguage ディレクティブは、Apache
がディレクティブのスコープ (例えば、その時点の
<Directory>
の範囲) にある、明示的な言語拡張子
(AddLanguage
で設定される .fr
や
.de
) のない全てのファイルを、指定された
MIME-lang 言語であるとみなすようにします。
これにより、すべてのファイル名を変えることなく、
ディレクトリがオランダ語のコンテントを含んでいる、
というようなことを指定することができます。
拡張子を使用して言語を指定する方法と違い、
DefaultLanguage
は一つの言語しか指定できないことに注意してください。
DefaultLanguage
ディレクティブが有効でなく、ファイルに AddLanguage
で設定された言語の拡張子がないときは、
ファイルには言語属性がないとみなされます。
off
」で、path_info
コンポーネントは無視されます。
このディレクティブは、バーチャルファイルシステムを使用している際に 推奨されるディレクティブです。
/bar
が存在して (foo.shtml は存在しない)
/bar/foo.shtml
に対するリクエストを発行した場合、
/bar/foo.shtml
として扱い、
AddOutputFileter INCLUDES .shtml
のようなディレクティブは
INCLUDES フィルタをリクエストに付加させます。
.htaccess
ファイルが親ディレクトリやサーバの設定ファイル
から継承した関連付けを取り消すことができます。例えば:
extension は大文字小文字を区別しません。 また、最初のドットはあってもなくても構いません。
.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/bar
ディレクトリの .html
ファイルは SSI ではなく (mod_include
モジュール参照)、
普通のファイルとして扱われるようにする効果があります。
extension は大文字小文字を区別しません。 また、最初のドットはあってもなくても構いません。
.htaccess
ファイルで取り消すことができます。
extension 引数は大文字小文字を区別しません。また、 最初のドットはあってもなくても構いません。
.htaccess
ファイルで取り消すことができます。
extension 引数は大文字小文字を区別しません。また、 最初のドットはついてもつかなくても構いません。
.htaccess
ファイルで取り消すことができます。
extension は大文字小文字を区別しません。 また、最初のドットはあってもなくても構いません。
.htaccess
ファイルが親ディレクトリやサーバの設定ファイルから継承した
関連付けを取り消すことができます。たとえば:
これは /foo/
ディレクトリ以下の .cgi
ファイルの特別な扱いを取り消します。ファイルはデフォルトタイプとして扱われます。
注意:
extension は大文字小文字を区別しません。 また、最初のドットはあってもなくても構いません。
TypesConfig ディレクティブは、MIME
タイプ設定ファイルの位置を設定します。filename は
ServerRoot からの相対パスです。
このファイルはファイルの拡張子からコンテントタイプへの
デフォルトのマッピングを設定します。
ほとんどの管理者は、よく使われるファイル名の拡張子を
IANA に登録されたコンテントタイプに関連付けている、
Apache の mime.types
ファイルを使います。
現在の一覧は
http://www.isi.edu/in-notes/iana/assignments/media-types/media-types
で管理されています。これは、主要なメディアタイプの定義を提供して、
必要ところを httpd.conf
を簡略にします。
mime.types
はサーバをアップグレードしたときに
置き換えられるかもしれないので、そのファイルを直接
編集しないでください。
ファイルは、
拡張子の大文字小文字は区別されません。空行やハッシュ (`#') で始まる行は無視されます。