WEBサービス創造記

WEBサービスを作ったり保守したりしてる人のメモブログです。

HTTPステータスコードが404や503などの時に出力されるエラーページをカスタマイズする

      2012/12/09

オリジナルエラーページの作成

HTTPステータスコードとは、WEBサーバからのレスポンスを意味する3桁の数字です。

400番台の数字はクライアント側のエラーを意味し、500番台の数字はサーバ側のエラーを意味します。
一番よく見かけるHTTPステータスコードはおそらく404ではないかと思います。
404はリクエストしたページが見つからないときに返されるステータスコードです。デフォルトでは存在しないページにアクセスすると下図のようなページが出力されます。

このエラーページは、自分で自由にカスタマイズすることができます。
ここでは例としてドキュメントルート直下にerrorというディレクトリを作成し、その中に404エラーが発生したときに出力するページを作成してみます。

[root@centos ~]#  vi /var/www/html/error/404.html



ページが見つかりませんでした。


ページが見つかりませんでした。

申し訳ございません。
ご指定されたWEBページは存在しません。

トップページへ

___EOD___; echo htmlspecialchars($codeBlock); ?>

簡単ですが、これで一応オリジナルエラーページの作成は完了しました。
続いて設定ファイルに404エラーが起こったときに上記のページを出力するようにApacheの設定を変更します。

Apacheの設定

エラーページのカスタマイズを有効にするには、Apacheの設定ファイル内にErrorDocumentディレクティブを追加します。

[root@centos ~]#  vi /etc/http/conf/http.conf    Apacheの設定ファイルを開く
ErrorDocument 404 /error/404.html   ※1番目の引数にステータスコードを、2番目の引数にオリジナルエラーページへのパスをそれぞれ指定

上記のように、ファイルへのパスが絶対パスではない場合は、ドキュメントルートからの相対パスとなりますので、ご注意ください。
また、”http://linuxserver.jp/error/404.html”のようにURLで指定することも出来ます。

.htaccessを利用して同様の設定をすることも可能です。

上記でうまくいかない場合は、設定ファイルがデフォルトで”/error”のAliasを設定していて、ディレクトリのパスが変換されてしまっている場合があります。

[root@centos ~]#  vi /etc/http/conf/http.conf    Apacheの設定ファイルを開く
#Alias /error/ "/var/www/error/"   ※先頭に#をつけてコメント化し、Aliasを無効にする

Apacheを再起動すると、編集が反映されて404エラーの際はerror/404.htmlが出力されるようになります。

同じ要領で403や500などの他のエラーコードでも応用できます。

 - WEBサーバ構築 ,