PHPコーディング

HTTP 404 エラー を起こしたい

2007年10月31日
ネットビジネス便利ツールのWebサイトですが、URLがなくても、各ページで使っているヘッダや左メニューが表示され、クローラーはページがあると認識していることがわかりました。


ファイルは全てPHPです。各ページに表示する内容は別ファイルに保存してあり、PHPから読み込んで表示します。どのファイルを表示するかはURLの後ろに引数をつけて指定します。

表示しようとするファイルがあるかどうかチェックして、なければエラーを返していたのですが、ちゃんとエラーを利用できていませんでした(つまりバグ)。

そこで、ファイルがない場合、トップページに移動するように書き直したのですが、よく考えると問題が・・・

存在しないはずのページとトップページが同じページとみなされ、SEO上不利になります。思い直し、やはりないものはないとすることにしました。


そこでいろいろ調べたのですが、接続しようとしたURIがなければ、Webサーバーが404エラーを返します。404エラーが返ってくると、ブラウザはあの見慣れた『ページが存在しません』を表示し、クローラーはページがないと認識するのです。

ということは、PHPでファイルの存在を調べ、ない場合はHTTPを通じて404エラーを起こしてやればいいのではないかと考えました。

でもこれは失敗(私の知識がないだけか・・・?)。サーバーからすでにファイルが存在するという返事が返っているのです。おそらくエラーを起こすタイミングが遅いのでしょう。

そこで、苦肉の策。ファイルがない場合は、存在しないURLへジャンプさせればうまくいくのではないのか。
Header("Location: sonzaishinai.php");
で存在しないURLへ飛ばしてみました。

いまのところこちらが意図しているように動いているようです。