「ページが見つかりません」 - 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 バイト以上に設定する必要があります。
[HOWTO] Internet Explorer 5.x および 6.x の "HTTP エラー メッセージの簡易表示" 機能をサーバー側で無効にする方法 (Microsoft)
丸めて言うと、「カスタマイズしたエラーページが512バイト以上のHTMLで書かれていればそっちを表示するよ」ということである。

筆者の手元の環境(Apache2)で試してみた。エラー用のファイルに

<html>
エラーページだよーん
</html>
と書いていると、デフォルトのIEでは簡易メッセージが表示されてしまう。しかし
<html>
エラーページだよーん
エラーページだよーん
エラーページだよーん
エラーページだよーん
。。。(以下適当に長くする)
</html>
のように、512バイト以上になるように書いたら、そのまま表示されるようになった。

要するに、どうせエラーページをカスタマイズするならもうちょっとだけ凝ったデザインにしたほうが何かと良いみたいよ、ということで。(笑)

ちなみにこの話はこの過去記事はてなブックマークのコメントに誰かが残していたのがネタ元です。

トラックバックURL

このエントリーのトラックバックURL:
http://www.ywcafe.net/mt/mt-tb.cgi/546

トラックバック

» HTTPエラーページを自作エラーページにする方法 from Shoulder.jp
参考サイトを見ながらやりました。 IEの仕様で自作エラーページは512バイト以上... 続きを読む

コメント

やってみました!!
でも512バイトではうまくいかず、
513バイトならいけました。
なので、512バイト以上じゃなくって
513バイト以上ってのが正しいみたいですね。
とってもためになりました!
失礼しましたー☆彡

コメントする

(初めてのコメントの時は、コメントが表示されるためにこのブログのオーナーの承認が必要になることがあります。承認されるまでコメントは表示されませんのでしばらくお待ちください)


画像の中に見える文字を入力してください。