カスタムエラーページを設定する (CentOS 5.7): Linux の使い方


存在しないページへのアクセスに独自のページを表示する

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 https://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" も設定しておくといいかもしれません。