私のweb.xmlでは、404エラーコードを使用してページをリダイレクトするエラーページタグを作成しました。IE の場合は、[わかりやすい HTTP エラー メッセージを表示する] のチェックを外します。それだけで正常に動作し、リダイレクトされたページが表示されます。このオプションを有効にすると、「ページが表示されません」というエラーが発生します。IE Internet Option の [わかりやすい HTTP エラー メッセージを表示する] オプションの使用方法を教えてください (ツール -> インターネット オプション -> 詳細設定 -> ブラウズ (わかりやすい HTTP エラー メッセージを表示))。
2 に答える
IEは、ほとんどのユーザーが404の意味を知らず、さらに混乱させるため、この機能を実装しました。開発者にとって残念なことに、それは有用な情報やより良い実装がユーザーから保護されることを意味します。ジェフアトウッドは404ページについてまともな記事を持っています。彼の提案の1つは:
カスタマイズした404ページを512バイトより大きくする必要があります。そうしないと、IEはそれが標準のWebサーバー404メッセージであると見なし、独自のわかりやすいバージョンに置き換えます。
したがって、404ページを512バイト以上にして、ユーザーに表示されるかどうかを確認してください。
An HTTP response consists of the HTTP headers and the HTTP body. The first header contains the HTTP response code, which is a defined set of numeric codes that convey a certain meaning. Some status codes make the client do something specific, others don't. Any response may additionally contain an HTTP body, which is typically the actual page.
A 302 response code instructs the client to try fetching another URL (which is also contained in the headers).
A 404 response indicates that the page that was being requested does not exist. It means "error".
See http://en.wikipedia.org/wiki/Http_status_codes for more.
In either case, if the response also contains an HTTP body, the browser may or may not use this somehow. It is up to it. Typically a 302 redirect response does not contain a body, while a 404 error response contains some HTML page stating "sorry, something went wrong". Often, that is only the standard ugly default Apache error document.
If that IE option is turned off, IE will simply display the error page received from the server. If the option is on, it will put up its own pretty, "helpful" error page if it receives a 404 error which seems unhelpful.
And now the important part:
Don't "redirect" using 404 pages! They mean "error", not "redirect". Use 302 responses and the HTTP Location
header to redirect, not HTML meta tags or Javascript hacks.