元Webデザイナー兼コーダーの備忘録

ウェブデザインやプログラミング、ブログのカスタマイズなどについてアウトプットしています。

 メニュー

» HTML入門のまとめはこちらです。

Apache2:デフォルトのエラーページの在処

Apacheで気になることがあります。それは、404ページで表示しているテキストの在処がどこなのかです。ずっと気になっていたのですが、解決したと思います。

エラーページの在処

  • /usr/share/apache2/error

このフォルダの中にエラー時に表示するファイルが、格納されています。HTTPステータスコードによって、対応するファイルが変わります。例えば404エラーの場合、HTTP_NOT_FOUND.html.varが表示されるようです。ファイルの中には、表示するテキストが書かれています。言語別にテキストが用意されていて、英語の場合は以下の内容がブラウザに表示されます。

The requested URL was not found on this server.

この他にステータスコードの種類とウェブサーバの名前、ポート番号が表示されます。

日本語の場合は、以下の内容が表示されるようです。

要求された URL は本サーバでは見つかりませんでした。

見つけ方

  • /etc/apache2/conf-available/localized-error-pages.conf

上記のファイル内に以下のような記述があります。本文から一部を抜粋します。

# The internationalized error documents require mod_alias, mod_include
# and mod_negotiation.  To activate them, uncomment the following 37 lines.

#<IfModule mod_negotiation.c>
#   <IfModule mod_include.c>
#       <IfModule mod_alias.c>
#
#           Alias /error/ "/usr/share/apache2/error/"
#
#           <Directory "/usr/share/apache2/error">
#               Options IncludesNoExec
#               AddOutputFilter Includes html
#               AddHandler type-map var
#               Order allow,deny
#               Allow from all
#               LanguagePriority en cs de es fr it nl sv pt-br ro
#               ForceLanguagePriority Prefer Fallback
#           </Directory>
#
#           ErrorDocument 400 /error/HTTP_BAD_REQUEST.html.var
#           ErrorDocument 401 /error/HTTP_UNAUTHORIZED.html.var
#           ErrorDocument 403 /error/HTTP_FORBIDDEN.html.var
#           ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var
#           ErrorDocument 405 /error/HTTP_METHOD_NOT_ALLOWED.html.var
#           ErrorDocument 408 /error/HTTP_REQUEST_TIME_OUT.html.var
#           ErrorDocument 410 /error/HTTP_GONE.html.var
#           ErrorDocument 411 /error/HTTP_LENGTH_REQUIRED.html.var
#           ErrorDocument 412 /error/HTTP_PRECONDITION_FAILED.html.var
#           ErrorDocument 413 /error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var
#           ErrorDocument 414 /error/HTTP_REQUEST_URI_TOO_LARGE.html.var
#           ErrorDocument 415 /error/HTTP_UNSUPPORTED_MEDIA_TYPE.html.var
#           ErrorDocument 500 /error/HTTP_INTERNAL_SERVER_ERROR.html.var
#           ErrorDocument 501 /error/HTTP_NOT_IMPLEMENTED.html.var
#           ErrorDocument 502 /error/HTTP_BAD_GATEWAY.html.var
#           ErrorDocument 503 /error/HTTP_SERVICE_UNAVAILABLE.html.var
#           ErrorDocument 506 /error/HTTP_VARIANT_ALSO_VARIES.html.var
#       </IfModule>
#   </IfModule>
#</IfModule>

この記述からエラー時に表示するファイルの在処が分かります。コメントアウトしているのに、適用されているのはどういうことなのかはよく分かりません・・・。

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

localized-error-pages.confにカスタマイズ方法が載っていたので、その方法をご紹介します。

  • plain text:プレーンテキストでカスタマイズする
  • local redirects:エラーページ用のファイルを作成する
  • 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

実験:プレーンテキストでカスタマイズする

  • /etc/apache2/conf-available/localized-error-pages.conf

上記のファイル内に以下のように記述します。

# Some examples:
ErrorDocument 404 "404 Not Found."
#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

サーバを再起動します。Apacheを再起動するコマンドは以下のとおりです。

systemctl restart apache2

ブラウザで表示を確認します。

404 Not Found.

と表示されます。

参考サイト

» HTML入門のまとめはこちらです。