「ページが見つかりません」 - IEのHTTPエラーメッセージの簡易表示をサーバー側で無効化する方法
結論から先に。カスタマイズした404エラーなどのページを用意してあるのに、IEだとメッセージ簡易表示機能の内容が表示されてしまうという現象でお悩みの方。原因は、そのカスタマイズしたページの内容が少なすぎるからだ。512バイト以上書けば、望みどおりになる。
たとえばWebサーバがApacheの場合、エラーメッセージ(404とか)は次のようにブラウザに表示される。

これじゃ味気ないっていうんで、httpd.conf や.htaccessファイルなどに
ErrorDocument 404 /fugahoge.html
とか書いておけば、エラーの場合にオリジナルのhtmlファイルを返すようにできる。
ところが、Internet Explorerでは「HTTPエラーメッセージを簡易表示する」という機能がデフォルトでオンになっている。

この機能は、Webサーバーが何らかのエラーステータスを返してきた場合にはIEのオリジナルの画面を表示してしまう。こんな感じ↓

さっきのようにカスタマイズしたエラーページをWebサーバー側で用意していたとしても、それは無視されてしまうのだ。
・・・と思っているWebデザイナーやエンジニアは多かった(実は筆者も)。 しかし事実はこういうことらしい。
... "簡易" エラー メッセージは、クライアントへの応答のサイズが指定されているしきい値より小さい場合しか表示されません。たとえば、HTTP 500 応答の実際のテキストを表示するには、Content-Length を 512 バイト以上に設定する必要があります。丸めて言うと、「カスタマイズしたエラーページが512バイト以上のHTMLで書かれていればそっちを表示するよ」ということである。
[HOWTO] Internet Explorer 5.x および 6.x の "HTTP エラー メッセージの簡易表示" 機能をサーバー側で無効にする方法 (Microsoft)
筆者の手元の環境(Apache2)で試してみた。エラー用のファイルに
<html>と書いていると、デフォルトのIEでは簡易メッセージが表示されてしまう。しかし
エラーページだよーん
</html>
<html>のように、512バイト以上になるように書いたら、そのまま表示されるようになった。
エラーページだよーん
エラーページだよーん
エラーページだよーん
エラーページだよーん
。。。(以下適当に長くする)
</html>
要するに、どうせエラーページをカスタマイズするならもうちょっとだけ凝ったデザインにしたほうが何かと良いみたいよ、ということで。(笑)

コメント
やってみました!!
でも512バイトではうまくいかず、
513バイトならいけました。
なので、512バイト以上じゃなくって
513バイト以上ってのが正しいみたいですね。
とってもためになりました!
失礼しましたー☆彡
Posted by ☆彡 at 2009年3月25日
コメントする
(初めてのコメントの時は、コメントが表示されるためにこのブログのオーナーの承認が必要になることがあります。承認されるまでコメントは表示されませんのでしばらくお待ちください)