404とWordPress
WordPressは存在しないページの処理について結構貧弱.
例えば,http://aerial.st/fooというページはWordPress上で作製されていないし,また実際そんなファイルも存在しないのに,アクセスするとページが表示される.でもこれはhttp://aerial.stを表示したのと全く同じ結果で,もちろん意図していないこと.
ページ処理の流れとしては,
- Apacheが.htaccessに記述されたRewriteCond/RewriteRuleに従って,リクエストされたファイルもしくはディレクトリ(の実体,というのかな?)が存在しなかったら,WordPressに処理を投げる.
- 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を使用すれば,その一覧を表示することができる.