関連モジュール mod_actions mod_asis mod_cgi mod_imap mod_info mod_include mod_mime mod_negotiation mod_status |
関連ディレクティブ Action AddHandler RemoveHandler SetHandler |
「ハンドラ」とは、ファイルが呼ばれたときに実行される動作の Apache における内部表現です。通常、ファイルはファイル型に基づいた暗黙の ハンドラがあります。普通はすべてのファイルは単にサーバに扱われますが、 ファイルタイプの中には別に「ハンドル」 (訳注: 扱う) されるものもあります。
Apache 1.1 では、ハンドラを明示的に使用する機能が追加されました。 ファイルの拡張子や置いている場所に基づいて、ファイル型と関係なく ハンドラを指定することができます。これはより優雅な解決法という点と、 ファイルにタイプと ハンドラの両方を関連付けることができるという点で優れています。 (複数の拡張子のあるファイル も参照してください)。
ハンドラはサーバに組み込んだり、モジュールとして含めたり、 Action ディレクティブとして追加したりすることができます。 以下は標準配布に組み込まれているハンドラです。
default_handelr()
を使ってファイルを送ります。
静的なコンテンツを扱うときにデフォルトで使用されるハンドラです。(core)以下のディレクティブによって、拡張子が html
であるファイルは footer.pl
CGI スクリプトを起動するようになります。
Action add-footer /cgi-bin/footer.pl AddHandler add-footer .html
CGI スクリプトは望ましい修正や追加を行なって、元々要求された文書
(環境変数 PATH_TRANSLATED
で指されています)
を送る責任があります。
以下のディレクティブは send-as-is
ハンドラを使用するように指示します。このハンドラは自分自身の
HTTP ヘッダを持っているファイルに使用されます。ここでは、拡張子に関わらず、
/web/htdocs/asis
ディレクトリにある全てのファイルは
send-as-is
ハンドラによって扱われます。
<Directory /web/htdocs/asis> SetHandler send-as-is </Directory>
ハンドラの機能を実装するために、利用すると便利かもしれないものが
Apache API に追加されました。
詳しく言うと、request_rec
構造体に新しいレコードが追加されたということです。
char *handler
もしモジュールがハンドラに関わりたい場合、やらなければならないことは、
リクエストが invoke_handler
ステージに達する以前に
r->handler
を設定することだけです。
ハンドラはコンテントタイプの代わりにハンドラ名を使うようになっていること以外は、
以前と同じように実装されています。必ず要求されているわけではありませんが、
メディアタイプの名前空間を侵さないように、ハンドラの名前にはスラッシュ
を含まない、ダッシュ (訳注: "-") で分離された名前を付ける習慣になっています。