Q
図1●HTTPステータス・コードが404のエラー画面
意図したエラー画面を表示したいのに,Internet Explorerのこの標準エラー画面が表示されてしまう。

Webサーバーの負荷が高いときなどにブラウザに出る「HTTP 404 未検出」というエラー・メッセージを一般の利用者にも分かりやすいものに変えたいと考えています。しかし,実際にWebサーバー側の機能でエラー・ページをカスタマイズしてみると,きちんと表示されるブラウザもあれば,図1のように意図したエラー・メッセージを表示できないブラウザもあります。なぜ,このように事象が異なるのでしょうか。すべてのクライアントで,Webサーバー側でカスタマイズしたエラー・ページを確実に表示する方法はないのでしょうか?


A

Internet Explorer(IE) 5.01以降では,Webサーバー側で管理者がカスタマイズしたエラー・ページを表示できないことがあります。

 IE 5.01以降で表示するエラー・メッセージには,ブラウザ内蔵のものとWebサーバーから送られてきたものの2つがあります。IEのデフォルト設定では,WebサーバーからHTTPステータス・コードでエラーが返却された場合に,IEに内蔵された対応するエラー・メッセージを表示しようとします。一方,Webサーバーから送られるエラー・メッセージのドキュメント・サイズが一定バイト数より大きい場合はWebサーバーが送ってきたエラー・メッセージを表示する仕組みです。ご質問のケースでは,カスタマイズしたエラー・メッセージのドキュメント・サイズが小さいので,IE内蔵のものを表示していると思われます。


△ 図をクリックすると拡大されます
図2●IE内蔵のエラー・メッセージを表示するかどうかを決めるしきい値

IE内蔵のエラー表示のしきい値は HTTPステータス・コードごとに違う
 IE内蔵の対応エラー・メッセージを表示するかどうかのしきい値は,レジストリ・キーHKEY_LOCAL_MACHINE(あるいはHKEY_CURRENT_USER)\Software\Microsoft
\Internet Explorer
\Main\ErrorThresholds下に保存されています(図2)。これを見ると分かるように,256バイトもしくは512バイトの値が設定されています。しきい値は,HTTPステータス・コードによって異なります。なお,HKEY_CURRENT_USER以下のレジストリで行われた設定の方が優先されます。



△ 図をクリックすると拡大されます
図3●[HTTPエラーメッセージを簡易表示する]のチェックを外すことで一括してIE内蔵のすべてのエラー・メッセージの表示を無効にできる

 仕組み上は,このしきい値を小さくすることで,カスタマイズしたエラー・ページを表示可能です。また,この機能を無効にすることもできます。IEの[インターネットオプション]の[HTTPエラーメッセージを簡易表示する]のチェックを外せば,一括して無効になります(図3)。詳細は,マイクロソフトのサポート技術情報「HTTPエラーメッセージの説明」(218155)を参照してください。

サーバー側での対処策が有効
 しかし,クライアント側で対処することで常にWebサーバーから送信されたエラー・メッセージを表示させるようにするには,個々のマシンでの設定が必要です。グループ・ポリシーやInternet Explorer Administration Kit(IEAK)などで設定が集中管理されていない場合は,クライアント側での設定は難しいでしょう。また,Webサーバーをインターネットに公開し不特定多数のクライアントを対象にした場合,そもそもクライアント側の設定変更は現実的に不可能です。

 このような場合は,やはりWebサーバー側で対処しなくてはなりません。Webサーバーから送信するエラー・メッセージのサイズを,必ず512バイトより大きくなるように余分なデータを追加すれば対応できます。WebサーバーがInternet Information Servicesの場合の対処法は,サポート技術情報「Internet Explorer 5の"HTTPエラーメッセージの簡易表示"機能をサーバー側で無効にする方法(294807)」や,PadResponseというツールの利用を検討してください。

高橋 基信