WordPressの中途半な404エラーを改善する

WordPressの中途半な404エラーを改善する存在しないページがリクエストされた時に表示する、404エラーメッセージを用意しているサイトも多い。

404エラーメッセージ

「お探しのページが見つかりません。~」というヤツだ。

WordPressでも、404エラーメッセージは、用意されているのだが、その動作には少々難がある。

パーマリンクの設定でも、条件は変わってくるが、このブログに限って言えば、例えば、

http://www.near-mint.com/blog/?p=999

の様なアドレスの場合。

WordPressが処理できそうなアドレスだが、(少なくとも現時点では)存在しないページである。

この場合は、WordPressが用意した、404エラーメッセージが表示される。

対して

http://www.near-mint.com/blog/404message

の様に、WordPressで処理できなさそうなアドレスで、かつ存在しないページがリクエスされた場合は、WordPressが用意した404エラーメッセージは表示されない。

(別途、エラーメッセージを用意していないなら)単にブラウザのエラーメッセージとなる。

WordPressが用意した404エラーメッセージなのだから、WordPressが処理できるURLでなければ、表示されないというのは当然といえば、当然だが、統一感がないので、これを何とかしようと思う。

その前に、前者の場合は、404エラーメッセージが表示されてはいるが、本当にステータスコード「404」を返しているのかという疑問もあった。

ステータスコード「404」は、サーバーが返すコードで「ページが存在しない」という意味になる。

404エラーメッセージのページが表示されるか否かは別として、ステータスコード「404」を返し、サーバーが、明確に「ページが存在しない」事を伝えるのは重要である。

例えば、404エラーメッセージを表示しながら「リクエストが成功しました」の意味のステータスコード「200」を返しているなら、ブラウザはともかく、検索エンジンのエージェントなどは、ページが存在すると勘違いしてしまい、本当は存在しないページに対してクロールを繰り返すかも知れない。

挙句の果ての404エラーメッセージのページが、検索エンジンに登録されることになる。

ステータスコードを調べるには、「ステータスコードチェッカー」というサイトが便利なので紹介しておく。

存在しないURLを入力して、下の図ように「404」となっていれば、正しく、存在しないページとして通知されている。

ステータスコード404

WordPressが処理して404エラーメッセージを表示した場合も、正しく、ステータスコード「404」を返しているので問題ない。

今度は、WordPressの404エラーメッセージが表示されない後者の例にを解決するために「.htaccess」に

ErrorDocument 404 /blog/index.php?error=404

という1行を追加し、404エラーメッセージの指定を行い、対応することにした。

これで、WordPressが処理できるURLについては、WordPressが処理して404エラーメッセージを返し、それ以外のURLについては、「.htaccess」に従う。

「.htaccess」は、WordPressのインストールディレクトリに存在する筈なので、それを編集すれば良い。

エラーメッセージの指定は、「index.php?error=404」としているが、WordPressが用意しているものを流用した。

パスの部分は、自分の環境に合わせて書き換えること。

ちなみに、404エラーメッセージは、テーマの「404.php」で生成しているので、これを自分のブログに合わせて書き換えると良い。

余談だが、ステータスコードを調べる際に、最初は、Telnetで80ポートを叩けば良いと思ったのだが、その時、初めて、「Windows Vista」ではTelnetコマンドが標準でインストールされていない事を知った。

コントロールパネルから、追加インストールする必要がある。



WordPress, ネット・PC, Permalink