その他・Apache サーバーステータス別 エラーページ作成

【サーバーステータス別 エラーページ作成 】

サイトの移転やリニューアルなどを行い、今まで存在していたページなどのURLが変更されても該当のページにブックマークを行って居るユーザーは、不意にページが閲覧できなくなります。
このような場合のサーバーの動きはサーバーステータスコード404「Not Found」を返します。
このNot Foundページをオリジナルにカスタマイズしてしまうと言うのがここでの主旨です。

サイトの概観、ページのデザインなどを考慮した内容にしたり、ブックマークを行なっていた人などを考慮する為にサイトマップのURLを掲載しておいたり、TOPページURLを掲載したりなど、自分の環境に応じてHTMLファイルを作成し、Not Found表示時に作成したHTMLを指定するようにしておけば、サーバーステータスコードによって表示させるHTMLファイルを指定できます。

準備として予めエラー用のHTMLファイルを作成し、公開TOPディレクトリに「error」ディレクトリを作成し、この中にエラー用のHTMLを配置します。
例としてここからは、404エラードキュメント用のHTMLファイル名を「404.html」とします。
171

ちなみにこのレンタルサイトでも404エラードキュメントが指定できるので、当サイトで作成したHTMLは、こちらのファイルになっています。

エラー表示時のHTML指定設定は、Apacheのインストール先にある「httpd.conf」ファイルにて行ないます。
「httpd.conf」をメモ帳などのエディタで開き、下記内容が記載されている場所を探します。
# 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

有効にするエラードキュメント先頭行の「#」を削除します。
ここでは「404」を作成しているので、
ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var
が該当します。

自分で作成したHTMLファイル名に変更し、
ErrorDocument 404 /error/404.html
とします。

同様に他エラードキュメントも作成する場合には、同作業を行いHTMLファイル名を指定します。
変更したhttpd.confを保存し、Apache2を再起動します。

この状態で自分が使用しているドメインで、存在しないURLをブラウザで指定し、作成したエラー用HTMLファイルが表示される事を確認します。

上記は全体のサーバー設定にてエラードキュメントを指定した場合であり、バーチャルホストを利用している全てのドメインに対して同じエラードキュメントを返します。
バーチャルドメインにて運営をし、個別でエラードキュメントを指定する場合には、バーチャル設定項目に必要なエラードキュメント行を追記するだけで指定することが出来ます。

下記はサーバーステータス内容ですので、自分でHTMLファイルを作成する場合などの記載コメントの参考等として利用してください。
【ステータスコード400】
リクエストされたコードをサーバーが理解できない場合。
【ステータスコード401】
リクエストは認証を必要とする場合。
【ステータスコード403】
リクエストは理解したが実行を拒否した場合。
【ステータスコード404】
リクエストされたURLに該当するファイルが無い場合。
【ステータスコード405】
許可されていないリクエストを受けた場合。
【ステータスコード408】
リクエスト待ち時間内に反応をしなかった場合。
【ステータスコード410】
リクエストはサーバでは利用できず転送先アドレスも判明しない場合。
【ステータスコード411】
Content-lengthが無いリクエストを拒否した場合。
【ステータスコード412】
1つ以上のリクエストでの条件が、サーバー上で不正と判断された場合。
【ステータスコード413】
リクエストが大きく処理不能のため拒否した場合。
【ステータスコード414】
リクエスト長いので拒否した場合。
【ステータスコード415】
リクエストされたメディアタイプがサーバーでサポートされていない場合。
【ステータスコード500】
サーバーが原因でのエラーの場合。
【ステータスコード501】
リクエストに必要な機能をサポートしていない場合。
【ステータスコード502】
リクエストを実行時Proxyサーバー等が不正なレスポンスを受けた場合。
【ステータスコード503】
サーバー過負荷等によりリクエストを受けなかった場合。