2009年2月15日日曜日

404のかわりに任意のレスポンスコードおよびエラーメッセージを返すには

mhag が、存在しない URL にアクセスされたときに 404 ではなく別のレスポンスコードを返そうと頑張っていました。詳しくはこちら

最初は目的のレスポンスコードを返す CGI スクリプトを書いて、 mod_rewrite で URL を書き換えて実現していましたが、この方法では 404 のたびに CGI スクリプトが起動されるため効率面ではあまり思わしくありません。

ErrorDocument でレスポンスコードおよびエラー時のドキュメントファイルを指定することもできますが、他の方法として、(静的でよければ) mod_asis を使うと、レスポンスコードもエラーメッセージも自由に設定できます。

これらの方法であればプロセスが毎回 fork したりせずにすむので、アクセスが多い Web サイトでも安心ですね。

その他の解としては mod_perl などで任意のレスポンスを返すハンドラを書いてしまう手もあるでしょう。この方法ならヒット毎の fork を防ぎつつ、動的にレスポンスコードやメッセージを自由に制御できます。


1 件のコメント: