エラーページ設定・作成 | 404 Not FoundをhtaccessとPHPで回避

RFC2068で規定されたHTTPのエラーコードはいくつかあります。 4xxのステータスコード(クライアント・エラー)で、よく目にするのは次のようなものです。

401
Unauthorized(リクエストはユーザ認証を必要とする)
403
Forbidden(サーバはリクエストを理解したが、それを実行する事を拒絶した)
404
Not Found(サーバが Request-URI に一致するものを見つけられなかった)

これらのステータスコードがWEBサーバーから返された場合に表示されるのがいわゆる「エラーページ」です。 WEBサーバー標準のエラーページは素っ気ないのでカスタマイズするという方法もありますが、htaccessファイルとPHPのスクリプトで既存のページへリダイレクトしてしまうというやり方もあります。

「.htaccess」と「error.php」の2つのファイルを用意し、次のように記述します。

.htaccessの記述
ErrorDocument 401 /error.php
ErrorDocument 403 /error.php
ErrorDocument 404 /error.php
error.phpの記述
<?php
header('HTTP/1.1 301 Moved Permanently');
header('Location: /');
?>

それぞれのファイルを保存したら、サーバーにアップロードしてください。

解説

上記の場合、401,403,404のエラーが出た場合、「error.php」がリクエストされます。 「error.php」はサイトのトップページにリダイレクトされます。 最終的にはトップページが表示されることになりますので、トップページだけは確実にアクセスできるようにしておく必要があります。

.htaccessもerror.phpもいろいろな書き方が出来そうです。 必要に応じて修整して下さい。