カスタムエラーページを設定する (CentOS 5.7)
2012/01/17 Tomohiro Kumagai
□ 存在しないページへのアクセスに独自のページを表示する
CentOS 5.7 上で稼働している Apache 2.2.3 で、存在しないページにアクセスがあったときに、独自の Not Found
通知ページを表示することができます。
そのためには、普通のページと同じようにエラーページをサイト内に用意して、httpd.conf などのサイト設定で、そのページの URL を
ErrorDocument ディレクティブに設定します。
ErrorDocument 404 /errors/404.html
このようにすることで、存在しないドキュメントにアクセスしようとしたときに、"404 Not Found" ステータスとともに、上記で指定した
URL の内容がブラウザ側に送られます。
このとき、ブラウザー側の URL は、アクセスしたときの間違えた URL のままになっています。
この設定を、次のように http から始まる URL で指定することも出来ますが、このときには、動作が少し違ってきます。
ErrorDocument 404 http://www.station.ez-net.jp/error/404.html
このようにすると、指定された URL が存在しなかった場合には、ブラウザに対して "302 Found" で、エラーページがある URL
が通知される感じになるようでした。
リダイレクトでの通知のため、ブラウザでエラーページが表示されたときには、上記で指定した URL
がアドレスバーに表示されます。また、もうひとつ重要な違いがあって、それは通知ステータスが、リダイレクト先のページに依存するところです。
何も工夫せずに html ファイルを指定しただけの場合、リダイレクト先のエラーページで "200 OK" ステータスが返されます。
人間が見るだけならそれで支障はないですけれど、検索エンジンなどのプログラムがページを見る場合には、その URL
が存在するものと誤解してしまうため、何らかの不都合が出てくることもあるかもしれません。
ちなみに、Apache のディフォルトの通知メッセージに戻したい場合には "ErrorDocument 404 default"
というように設定します。
このような感じで、ステータスコードに応じたカスタムページを表示させることができます。
上記では "404 Not Found" での設定ですけど、ディレクトリに index.html などのスタートページが無いときに返される
"403 Forbidden" も設定しておくといいかもしれません。