前の記事 ≪:2009年4月20日 管理人のブックマーク
次の記事 ≫:物凄く綺麗なアイコンセットが色々

訪問者と管理者に有用な403/404エラーページを作るPHPチュートリアル

2009年04月21日-はてなブックマーク

スポンサード リンク
[PR] 英単語を忘却曲線アプリを使って超効率よく記憶する方法

404/403 Website Error Pages With PHP Auto-Mailer - Nettuts

訪問者と管理者に有用な403/404エラーページを作るPHPチュートリアル。
apacheデフォルトのエラーページは不親切ということで、カスタムエラーページを作ろうという議論は前から色々あるみたいですが、その具体的方法について。
単純なチュートリアルだけではなく、どういう内容にすればよいか、エラーの情報をどうするか、などの見本もあって興味深いものとなっていました。

知っている人にとってはあまりにも当たり前すぎて逆に着手しないという風に流れるかもしれませんが、一度、記事を参考にエラーページについて考えなおしてみようかな、と思ってしまいました。
phpに詳しくない方でも、チュートリアルを見れば、物凄く簡単に設定できるので設定してみるのもよいかも。

phpでの403,404ページの作り方

では具体的な作成方法について。
PHPと.htaccessを知っている方には特に難しいことはなく、.htaccess に以下のように記述する、ということはご存知のとおり

.htaccessの内容
ErrorDocument 404 /error/404.php
ErrorDocument 403 /error/403.php

/error/ ディレクトリを作って 404.php, 403.php には以下のように記述すればよいです。

404.php のコード
<?php

// HTTP404ヘッダー
header("HTTP/1.0 404 Not Found");
$error_code = '404 Not Found';
require_once('errorpage.php');

?>

403.php のコード
<?php

header("HTTP/1.0 403 Forbidden");
$error_code = '403 Forbidden'; // Specify the error code
require_once('errorpage.php');

?>
403.php, 404.php を /error/ 以下に置きます。
で、403,404.php から読み込んでいる errorpage.php に好きなHTMLの内容を書いて出しましょうというコードになってます。

errorpage.php はたとえば以下のようにしておけば、403,404の場合にも同じように表示されて管理の手間が省けるということでサンプルではそうなっています。

errorpage.php
<html>
<body>
<a href="/">トップページに戻る</a>
<!--
ブラウザによっては一定のバイト数以上出力しないとブラウザデフォルトの404ページが表示されてしまうので注意が必要です。
IEの場合は、512バイトが最小バイト数になっているので、書くことがない場合は、このようにコメントをつけてバイト数を増やすこともできます。

ダミー文字列 ダミー文字列 ダミー文字列 ダミー文字列 ダミー文字列
ダミー文字列 ダミー文字列 ダミー文字列 ダミー文字列 ダミー文字列
ダミー文字列  ダミー文字列 ダミー文字列 ダミー文字列 ダミー文字列
-->
</body>
</html>

このファイルも /error/ ディレクトリにおきます。

以下のようなファイル構成になります。

/error/404.php
/error/403.php
/error/error.php

これでエラーページの設定は完了になります。

何を表示するか?アクセス情報をどうするか?

で、上記errorpage.phpはデフォルトのapacheよりはマシにしても、あまりにも簡素ですね。
ということで、以下のようなものを表示するとイメージ的にも分かりやすいかも、という例が示されています。



ホーム、ブログ、このページについて、連絡先、サイトマップといった最低限の情報が表示されていれば親切ですね。
SmashingMagazineなどでも「404 Error Pages, One More Time | Design Showcase」のような404ページデザインのショーケースが公開されていてデザインの参考にできそうです。

記事元のページでは、更にエラーページにアクセスがあった際にメールをするとよい、としていて、そのメール送信のPHPコードサンプル例も公開されています。
リファラーやエージェントも記録されているメールを送れば、検索エンジンにもしインデックスされている内容がなんらかの状況によって消えている場合であっても即座に検地することができ、サイトの改善に努めることができそうです。

アクセスが多いサイトの場合、エラーページへのアクセス毎にメールが届くというのはちょっとあぶないですが、アクセスがそれほど多くないサイトの場合、更にエラーページへのアクセスも少ないですから、毎回メール送っちゃってもよいのかもしれません。

アクセスの多いサイトなら、アクセスログ等からエラーページへのアクセスの統計をとって数時間間隔などでメールしてくれるものを作るのもいいのかもしれませんね。
考えてみると、アクセスの多いサイトほど、エラーページへのアクセス数というのはバカに出来ないもので、トラフィックを逃してしまっているかもしれず、こうした対処をちゃんとすべきなのかも。

というわけで、今更ではありますが、早速このブログも作ってみました。



やってないという方は、数分で出来るのでやってみましょう。

関連の記事検索:PHP, .htaccess, 404
スポンサード リンク

By.KJ : 2009年04月21日 07:02 livedoor Readerで購読 Twitterに投稿

間違いの指摘をしていただける方はメール、あるいはTwitter/FBでお願いします(クリック)