.htaccessでエラーページを設定する
ページが見つからなかった場合404 Not Foundなどのエラーページが表示されますが、そのページは.htaccessでカスタマイズできます。
エラーページのカスタマイズにはErrorDocumentディレクティブを使います。
ErrorDocumentディレクティブ
ErrorDocumentディレクティブはerror-code引数に指定されたHTTPステータスコードに応じてdocument引数の内容を返します。
ErrorDocument error-code document
構文はErrorDocumentディレクティブと引数を半角スペースで区切って記述します。引数の記述は省略できません。次のように記述します。
ErrorDocument 403 /403.htm
ErrorDocument 404 http://www.example.com/404.htm
ErrorDocument 500 "Error 500"
error-code引数
error-code引数にはHTTPステータスコードを半角数字で記述します。Apacheのドキュメントによるとほとんどのステータスが指定できるようですが、具体的に指定できないステータスがあるのかはわかりませんでした。
HTTPステータスコードの種類と意味についてはStudying HTTPやWikipediaの内容がわかりやすいです。
document引数
document引数にはHTTPステータスコードが出された時に表示するメッセージかファイルの場所を記述します。ファイルの場所を記述した場合は、そのファイルの内容が表示されます。
メッセージを記述する場合
メッセージを記述する場合は表示したメッセージをそのまま記述しますが、その方法には少しルールがあります。
メッセージは半角英数字だけでなく全角文字でも記述できます。表示されるメッセージの文字コードは.htaccessファイルのものに依存します。
記述するルールは簡単ですが、Apacheのバージョンによって少し違います。
Apache 2.0より前(* < Apache 2.0)
Apache 2.0より前までは、メッセージの始端に"(ダブルクオート)を加えて記述します。表示されるメッセージに"(ダブルクオート)は含まれません。
ErrorDocument 404 "Error 404 Not Found (* < Apache 2.0 )
"(ダブルクオート)から改行までがメッセージになると考えて間違いないと思います。ただし、改行前に続く半角スペース・タブはメッセージと認識されません。
Apache 2.0以降(Apache 2.0 <= *)
Apache 2.0以降は、メッセージを"(ダブルクオート)で囲んで記述します。表示されるメッセージに"(ダブルクオート)は含まれません。
ErrorDocument 404 "Error 404 Not Found (Apache 2.0 <= *)"
ファイルの場所を記述する場合
ファイルの場所は絶対URLかドキュメントルートからの絶対パスで記述します。その記述ルールはたった一つです。
HTTPステータスコードが401に限ってはドキュメントルートからの絶対パスで記述しなければいけません。理由については参考資料のリンク先を参照ください。
ファイルの種類はテキスト形式でなくても大丈夫です。私の試した限りでは画像ファイルでも正常に表示されました。ただ、アクセシビリティを考えるとテキスト形式である方が良いと思います。
ErrorDocument 403 /403.htm
ErrorDocument 404 http://www.example.com/404.jpg
document引数に記述したファイルが見つからない場合、無限ループに陥る事もあるので記述には注意して下さい。
参考資料
この記事を書くにあたりApache HTTPサーバドキュメンテーションのApache HTTP サーバ バージョン 2.2とApache HTTP Server Version 1.3の内容を参考にしました。
コメント[0]
コメント投稿フォーム
コメントを投稿するにはJavaScirptが必要です。ブラウザのJavaScriptを有効にしてください。
トラックバック[0]
トラックバックはまだありません。
コメントはまだありません。