WWW サーバは、クライアント(ブラウザー)からリクエストを受けると、レスポンスメッセージをクライアントへ返します。そのメッセージの中に、ステータスコードといって、処理結果を示すコードが含まれています。このコードは、3 桁の数字で、HTTP で定義されています。

このコードに応じて、指定の HTML ファイルへリダイレクトさせることができます。ネットサーフィンをしているときに、よく「HTTP 404 - ファイル未検出」や、「Not Found」をよく見かけませんか? これは、ステータスコードが「404」で、リクエストしたファイルが存在しないという意味です。

figure1 figure2

 

これは、もともと Apache のデフォルトで設定されいてる HTML、もしくは、サービス事業者が設定した HTML です。ただ、Internet Explorer の場合には、ステータスコード「404」を受けると、上図のように、書き換えるようです。

これを自分オリジナルの HTML にするには、「.htaccess」ファイルに、以下のように記述して下さい。3 つあるうちのいづれかひとつだけを記述してください。

ErrorDocument 404 /bar/error.html

ErrorDocument 404 http://www.foo.ne.jp/bar/error.html

ErrorDocument 404 "File not found"

しかし、2 行目の Romote URL での指定の場合、サーバは、ステータスコード「404」を返しません。実は、リダイレクトステータスコードを返してしまいます。したがって、エラー表示用のページとして指定したURLが、ブラウザーのアドレスバーに表示されているはずです。( 1 行目のローカル URL での指定と、3 行目のカスタマイズメッセージの場合には、アクセスした URL が表示されたままです。) なお、3行目のカスタマイズメッセージの場合は、Internet Explorer だと表示されません。

以上のことをこちらで確認できます。Internet Explorer 、 Netscape それぞれでお試しいただくと違いがわかると思います。すべて、存在しないホームページにリンクをはっています。ブラウザーのアドレス欄に注意して試してみてくださいね。なお、ファイルが存在しない場合に表示するページは、「 http://www.futomi.com/error/error404.html 」で用意しています。

【ローカル URL での指定時の注意点】

Internet Explorer では、ErrorDocument 指示子を使って、ローカル URL でカスタマイズページを表示するように設定しても、そのカスタマイズページが表示されない場合があります。その場合、Internet Explorer が持っているテンプレート HTML を表示してしまいます。

Internet Explorer は、各ステータスコードごとに、受信バイト数のしきい値の設定を持っています。もし該当ページにアクセスした際に、サーバから受信したデータがしきい値より小さい場合には、いくら ErrorDocument 指示子を使ってカスタマイズ HTML を表示しようとしても、テンプレートが表示されてしまいます。

http://support.microsoft.com/default.aspx?kbid=218155

従って、カスタマイズ HTML のサイズを、このしきい値より大きくしてあげる必要があります。ステータスコード 404 では、512 バイトとなっているようです。従って、カスタマイズ HTML のサイズを、512 バイト以上の大きさで作成してください。

 

さて、ステータスコード「404」以外にも、使えそうなコードがあります。以下にそれぞれの意味と、「.htaccess」の記述の方法を記します。


Unauthorized(401)

認証を必要とするページにアクセスしようとして、失敗した場合です。この場合には、Romote URL の指定を使うべきではありません。Local URL の指定を使ってください。前述の通り、Remote URL で指定の場合、ステータスコード「401」をクライアントに返さないため、クライアント側では認証エラーとなったことが分かりません。人が見ているぶんには問題ないのですが、もし、クライアントソフト側が、ステータスコードを判断して処理を分岐している場合には、致命的です。

ErrorDocument 401 /bar/error.html

Forbidden(403)

リクエストは受け取ったが、事情によりリクエストを受け付けなかった場合です。主に、ファイルのパーミッションが不適切であったり、もしくはそのファイルに対して、Apache の設定(.htaccess)でアクセス制限がかかっていたりした場合です。

ErrorDocument 403 /bar/error.html

Internal Server Error(500)

CGI がバグってたり、「.htaccess」の文法ミスの場合に表示されます。

ErrorDocument 500 /bar/error.html

ここで紹介している「.htaccess」の記載方法は、Apache 1.3 を基準としております。他のバージョンでは、動作を確認しておりませんので、ご注意ください。

戻る

会社案内 | 特定商取引法に基づく表示 | プライバシーポリシー | 当サイトへのリンクについて | お問い合わせ