カスタムエラーページを設定する (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" も設定しておくといいかもしれません。