リンク切れなどによって存在しないページがリクエストされた場合に備えて、カスタマイズした404ページを用意しておくようにします。そうすることで、有効なリンク先を提示できるようになります。404 ページのカスタマズ - ウェブマスター/サイト所有者 ヘルプ
ErrorDocument error-code documentErrorDocument ディレクティブ - 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ディレクトリ以下に配置する場合には注意が必要です。それは、たとえば下表のような構成にする場合です。
ドキュメント ルート | C:/localhost |
エラーページ | C:/localhost/error/404.html |
エラーページの指定 | ErrorDocument 404 /error/404.html |
こうするとエラーページの表示に失敗し、前述の「Additionally, a 404 Not Found error was encountered ...」のように、エラードキュメントの読み込みに失敗します。これは、Apacheの既定のディレクトリと名前が衝突するためです。この問題は、
のいずれかの方法で解決できます。このうち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 エラー メッセージの簡易表示" 機能をサーバー側で無効にする方法