- Home ›
- Apache入門 ›
- Apache基本設定
ErrorDocumentディレクティブ:エラー発生時に表示するメッセージを変更する
ErrorDocument ディレクティブはエラーが発生した時に表示するメッセージを任意のテキストに変更したり、あらかじめ作成しておいた Web ページを表示するように変更するときに使用します。ここでは Apache の ErrorDocument ディレクティブの使い方について解説します。
(Last modified: )
目次
ErrorDocumentディレクティブの使い方
ErrorDocument ディレクティブは Apache でエラーが発生したときに、クライアントへ返すメッセージをデフォルトのものから変更する場合に使用します。書式は次のとおりです。
ErrorDocument エラーコード エラーメッセージ
記述できる場所は httpd.conf, VirtualHost, Directory, .htaccess です。 .htaccess で設定する場合は AllowOverride FileInfo が設定されている必要があります。
エラーコードに指定したエラーが発生した場合に、エラーメッセージに設定したテキストを表示します。またエラーメッセージには作成済の Web ページの URL を指定することもできます。
エラーコードには例えば次のようなものがあります。(HTTP レスポンスステータスコードの一覧については「HTTP レスポンスステータスコード - HTTP | MDN」などを参照されてください)。
403 Forbidden 404 Not Found 500 Internal Server Error 503 Service Unavailable
例えばリクエストしたページが見つからないときに発生する 404 エラーの場合、デフォルトではブラウザに次のように表示されます。
ErrorDocument ディレクティブを実際に設定した場合にどのように表示されるのかは、このあとで解説します。
httpd.conファイルでの記述
httpd.conf ファイルにはデフォルトで次のように記述されています。
# # Customizable error responses come in three flavors: # 1) plain text 2) local redirects 3) external redirects # # Some examples: #ErrorDocument 500 "The server made a boo boo." #ErrorDocument 404 /missing.html #ErrorDocument 404 "/cgi-bin/missing_handler.pl" #ErrorDocument 402 http://www.example.com/subscription_info.html #
デフォルトでは ErrorDocument ディレクティブに関する明示的に設定は行われていません。
エラーが発生したときに指定したテキストを表示する
404 エラーに対して任意のテキストを設定する場合は次のように httpd.conf に記述します。
ErrorDocument 404 "Sorry, This page is note found."
httpd.conf ファイルを保存し、 Apache を再起動してください。そのあとであらためて存在しないページへアクセスすると、 ErrorDocument ディレクティブに設定したテキストが表示されます。
なお表示されるテキストは変わっていますが、 HTTP ステータスコードとしては 404 が返ってきていることに変わりはありません。
エラーが発生したときに指定したページの内容を表示する
404 エラーに対して同じサーバ内の別のページの内容を表示する場合は次のように httpd.conf に記述します。
ErrorDocument 404 /error/404.html
今回は表示するページとして、ドキュメントルートの中の error ディレクトリにある 404.html ページを指定しました。表示するページの URL はドキュメントルートからのパスで指定してください。
今回は 404.html に次のように記述してあります。
<!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>404 Not Found</title> </head> <body> <h1>404 Not Found</h1> <p>リクエスト頂いたページは見つかりません。</p> <p>申し訳ありません。</p> </body> </html>
httpd.conf ファイルを保存し、 Apache を再起動してください。そのあとであらためて存在しないページへアクセスすると、 ErrorDocument ディレクティブに設定したページの内容が表示されます。
ブラウザのアドレスバーに表示されている URL はもともとクライアントが指定した URL のままです。指定したページにリダイレクトして表示しているのではなく、エラーを伝えるコンテンツとして指定したページに記載された内容を読み込んで表示しています。(そのため、ページ内で画像を表示する場合、リクエストがあった URL が起点のページとなります。画像ファイルを相対パスで指定する場合は注意してください)。
なお設定したページの内容が表示されていますが、 HTTP ステータスコードとしては 404 が返ってきていることは変わりがありません。
エラーが発生したときに外部のサイトのページへリダイレクトする
404 エラーに対して外部のサイトにあるページへリダイレクトして表示する場合は次のように httpd.conf に記述します。
ErrorDocument 404 http://www.example.com/error.html
リダイレクトする外部のサイトの URL を指定してください。
httpd.conf ファイルを保存し、 Apache を再起動してください。そのあとであらためて存在しないページへアクセスすると、 ErrorDocument ディレクティブに設定した URL のページが表示されます。
なお外部のサイトのページを指定する場合は注意が必要です。クライアントへは本来の HTTP ステータスコードである 404 ではなく、指定した外部のサイトのページへのリダイレクトを表す HTTP ステータスコード 302 が返されます。
-- --
Apache の ErrorDocument ディレクティブの使い方について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。