|
"handler"はファイルがコールされたとき実行されるアクションの内部的なApacheの表示です。一般的にファイルはファイルタイプをベースとした、暗に示されたハンドラーを持っています。普通は全てのファイルは単にサーバによって提供されます。しかし、あるファイルタイプは別にハンドルされます。例えばあなたはCGIスクリプトを実行するために"application/x-httpd-cgi"タイプを使用するかもしれません。
Apache 1.1は明確にハンドラーを使用する能力が加わりました。ファイルの拡張子かロケーションをベースとしたこれらのハンドラーはファイルタイプとは関連があり せん。これは両方に都合が良いです。なぜならそれはより簡潔な解決法だからです。しかし、またファイルと関連づけることをタイプとハンドラーの両方に許可します。
ハンドラーはサーバかモジュールのどちらかに対して設定され、それらは
AddHandler命令は特定の拡張子を持つファイルをhandler-nameと結び付けます。 例えば、拡張子が.cgiのCGIスクリプトを実行できるようにするには、以下の様に定義します。
AddHandler cgi-script cgi
一度 srm.conf や httpd.conf ファイルを置き換えてしまうと".cgi"で終わっているファイルは CGI プログラムとして扱われます。
.htaccessファイルあるいは<Directory>あるいは<Location>セクションで設定されるとこの命令はhandler-nameで与えられた取り扱い方法によって一致するすべてのファイルを強制的に解析する。例えばもしあなたが完全にイメージマップルールファイルとして解析されるように命令を設定したいなら、拡張子に関わらずそのディレクトリ内の.htaccessファイルに次のように設定します:
SetHandler imap-file
もう一つの例:もしあなたがhttp://servername/statusのURLが呼ばれたときはいつでもレポートのステータスをサーバにディスプレイしたいなら、次のようにaccess.confを設定してください:
<Location /status>
SetHandler server-status
</Location>
ハンドラーの特徴を実行するために、あなたが使用したいApache APIに一部の追加が作られました。特に新しいレコードがrequest_rec構成に加えられました:
char *handler
もしあなたがハンドラーを取り扱うモジュールを持ちたいなら、リクエストのinvoke_handlerより先にハンドラーの名前にr->handlerを設定することだけが必要です。ハンドラーはコンテントタイプの代わりにハンドラーネームの使用にもかかわらす、前のままで実施されます。それが必要でないときメディアタイプname-spaceを侵略しないように、ハンドラーに対するネーミングルールがスラッシュのないダッシュで分けられた単語を使用することです。
The English original manual is here.