LayoutDefaultHandlers Off
LayoutHandler text/html
の二つの使い方がいまいち分かりません。
日本語で詳しく解説されている所をよろしくお願いします。
前回も、ここを紹介しちゃいましたが、ここに書かれていることが全てです。
まず、mod_layoutで普通にHeaderやFooterを指定すると、
ファイル名やファイルの拡張子で指定Headerなどの出力の有無が
決定されます。
「AddOutputFilter LAYOUT html」や
「LayoutIgnoreURI */hoge.cgi」などですね。
しかし、そのまま使用すると、cgiにもheaderの出力を設定した場合、
「画像として返却されるcgiで作成したカウンタ」などで、
画像ファイルの先頭にheaderとして指定したhtmlが付与されてしまい、
画像と認識されなくなり、カウンタが表示できない」などの不具合が発生します。
その際に効いてくるのが今回の設定です。
まず、「LayoutDefaultHandlers Off」ですが、
この行を指定しない場合、該当するハンドラ(ファイル種別)は、以下となります。
server-parsed
text/html
text/plain
perl-script
cgi-script
application/x-http-cgi
application/x-httpd-php
この「ハンドラ」とは、htmlの記載の中には含まれない、httpプロトコル内部の
ファイル種別のことで、apacheでは、Add Typeなどで、
拡張子と関連付けられたりします。
Add Typeでは、「この拡張子は、このファイル種別」という指定をしますので、
サーバ側では、その拡張子のファイルをクライアントに返却する際に、
ファイル種別を伴ってダウンロードさせることができます。
例えば、
「AddType application/vnd.rn-realmedia .rm」という記述で、
「.rmのファイルは、Realmediaのファイルですよ」とか、
「AddType video/x-ms-wmv .wmv」という記述で、
「.wmvはMicrosoftWindowsMediaのファイルですよ」などです。
Add Typeが記述されていない場合、よく分からない拡張子のファイルには、標準ではtext/htmlなどが指定されることになります。
そのハンドラについて、全てのハンドラに対応しないように設定するのが、
「LayoutDefaultHandlers Off」です。
その次に、htmlとして返却されるものに対してのみ、
ヘッダやフッタを出力するような設定を行うため、
「LayoutHandler text/html」を指定します。
要は、
「cgiやphpで出力するhtmlに対してはヘッダ/フッタをつける」
「cgiやphpで作成し、出力するような画像にはヘッダ/フッタを付与しない」
という設定を行うのが、この二行になります。
なるほど とても詳しい説明ありがとうございました。