404とWordPress

WordPressは存在しないページの処理について結構貧弱.

例えば,http://aerial.st/fooというページはWordPress上で作製されていないし,また実際そんなファイルも存在しないのに,アクセスするとページが表示される.でもこれはhttp://aerial.stを表示したのと全く同じ結果で,もちろん意図していないこと.

ページ処理の流れとしては,

  1. Apacheが.htaccessに記述されたRewriteCond/RewriteRuleに従って,リクエストされたファイルもしくはディレクトリ(の実体,というのかな?)が存在しなかったら,WordPressに処理を投げる.
  2. WordPressがindex.phpのなかでゴチャゴチャ弄って処理を施す.

という感じだと思う.ちなみにRedirectCond/RedirectRuleは次のとおり:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

パーマリンクのための.htaccessの記述はこれだけで,WordPress 1.5あたりと比べるとずいぶんと簡素,そのかわり挙動は大雑把.

WordPress内部で自分の扱うページ以外に対して404を吐いてくれればそれでいいんだけど,どうにも不十分な感が否めない.一応404の処理を向上させるためのハックが書かれたページがあったので実践してみたけど,どうだろう?:小粋空間:WordPress でステータスコード 404(Not Found)を返却するエラーページを作る

ついでに,WordPress内部でのURLリライトはWordPress Internal Rewrite Viewer Pluginを使用すれば,その一覧を表示することができる.