エラーページのカスタマイズ

リンク切れなどによって存在しないページがリクエストされた場合に備えて、カスタマイズした404ページを用意しておくようにします。そうすることで、有効なリンク先を提示できるようになります。404 ページのカスタマズ - ウェブマスター/サイト所有者 ヘルプ

構文

ErrorDocument error-code document
ErrorDocument ディレクティブ - core - Apache HTTP サーバ

記述例

ErrorDocument 500 "The server made a boo boo."
ErrorDocument 404 /missing.html
ErrorDocument 404 "/cgi-bin/missing_handler.pl"
ErrorDocument 402 http://localhost/subscription_info.html

スラッシュから始まるパスを指定した場合は、 DocumentRootからの相対パスとなります。

ErrorDocumentの記述後にエラーページを確認しようとして、「Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.」のように表示されるときには、指定したドキュメントを読み込めていません。

注意点

errorディレクトリの名前

エラーページを、ドキュメント ルートのerrorディレクトリ以下に配置する場合には注意が必要です。それは、たとえば下表のような構成にする場合です。

ドキュメント ルート C:/localhost
エラーページ C:/localhost/error/404.html
エラーページの指定 ErrorDocument 404 /error/404.html

こうするとエラーページの表示に失敗し、前述の「Additionally, a 404 Not Found error was encountered ...」のように、エラードキュメントの読み込みに失敗します。これは、Apacheの既定のディレクトリと名前が衝突するためです。この問題は、

  1. errorディレクトリの名前を変更する。
  2. errorディレクトリを、サブディレクトリに入れる。
  3. Aliasディレクティブで、パスをマップする。

のいずれかの方法で解決できます。このうち3番目のAliasディレクティブによる方法では、

Alias /error/ "C:/localhost/error/"

のように指定します。apache - .htaccess file can't find 404 ErrorDocument - Stack Overflow

なおApacheの既定の設定は、インストール ディレクトリのApache Software Foundation\Apache2.2\conf\extra\httpd-multilang-errordoc.confに、

Alias /error/ "C:/Program Files (x86)/Apache Software Foundation/Apache2.2/error/"

のように記述があります。

エラーページの必要サイズ

確実にエラーページを表示させるには、エラーページのサイズを512バイト以上にする必要があります。これはInternet Explorerの「HTTPエメッセージの簡易表示」機能を回避するためです。Internet Explorerの "HTTP エラー メッセージの簡易表示" 機能をサーバー側で無効にする方法