WordPress へのアクセスを最適化する .htaccess のリダイレクト設定

ありがたいことに最近結構なアクセスをいただいています。その分サーバへの負荷も結構なことになっているので、負荷の軽減に取り組んでいるのですが、Google ウェブマスターツール を見ていると、かなりの数の「見つかりませんでした(つまり 404 not found)」が出ていることに気づきました。

404 not found に対しても WordPress が逐一起動してしまうこと、本来なら拾えているアクセスを無駄にしないためにも、これを改善してみることにしました。

Movable Type のときに使用していたアドレスを WordPress にリダイレクト

wokamoto 兄さんに教えてもらった .htaccess を設定したときに、Movable Type 時代に使っていたアドレスから WordPress へとリダイレクトする設定をごっそり消してしまっていました。

以前は

Redirect Permanent /mt/archives/000199.php http://8bitodyssey.com/archives/199
Redirect Permanent /mt/archives/000198.php http://8bitodyssey.com/archives/198
Redirect Permanent /mt/archives/000197.php http://8bitodyssey.com/archives/197

みたいなコードを延々100行くらい書いていました。おかげで .htaccess のサイズも肥大化していたので、今回はこれをシェイプアップ。

RedirectMatch permanent /mt/archives/000(.*)\.php$ /archives/$1
RedirectMatch permanent /mt/ /

正規表現はむしろ苦手なほうですが、うまく行っているようです。これで、MT 時代の記事にリンクしていただいたアクセスも、WP へ。”permanet” にしているので、クローラーに対しても移転をお知らせできます。

ちなみに、.htaccess での設定は、上から順に実行/解釈されるそうなので、上記コードは、

# BEGIN WordPress

の一連のコードの前(上)に記載しました。

404 になってしまう /index.html へのアクセスをトップにリダイレクト

さきほども出てきた wokamoto 兄さんの設定

RewriteCond %{REQUEST_FILENAME} !\.(html?|xml|xsl|js|css|jpe?g|png|gif|ico)$

により、実在しないファイルへのアクセスは Apache レベルで 404 を返すようになっています。WordPress では index.php は用意されていますが、index.html は使用しないため、サーバ上もこのファイルはありません。

つまり、/index.html にアクセスすると…

Not Found

こうなっちゃうわけですな。みじめっ(つд・)

Apache にエラードキュメントを設定しよう!と決意を固めつつ、取り急ぎこれをトップにリダイレクトしたい。なぜなら、Nao さんとか wokamoto 兄さんのページのどこかから、index.html へのリンクがはられてしまっているから(笑)

うんうん唸りながら、結局 hiromasa センセに相談して、下記のようにしました。

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.html?$ / [R=301,L]
RewriteRule ^default\.html?$ / [R=301,L]
RewriteCond %{REQUEST_FILENAME} !\.(html?|xml|xsl|js|css|jpe?g|png|gif|ico)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

よかよか。

ちなみに、以下のようにすると、http://8bitodyssey.com/index.htmlだけでなく、http://8bitodyssey.com/naokomc/index.html のような存在しないindex.htmlへのアクセスをトップにリダイレクトしてくれます。

RewriteRule index.html http://8bitodyssey.com/ [R=301,L]

まぁどっちがよいかはあなた次第。ないものはないって表示したほうがよい気がしますけど、いちいち WordPress 起動するのもねぇ。

さて、これで負荷がどうなりますか。

このエントリーをはてなブックマークに追加このエントリのはてなブックマーク数このエントリをdel.icio.usに追加このエントリをLivedoor Clipに追加このエントリをYahoo!ブックマークに追加このエントリをFC2ブックマークに追加このエントリをNifty Clipに追加このエントリをPOOKMARK. Airlinesに追加このエントリをBuzzurl(バザール)に追加このエントリをChoixに追加このエントリをnewsingに追加Instapaper に保存するRead It Later に保存するこのエントリをつぶやくClip to Evernote

WordPress へのアクセスを最適化する .htaccess のリダイレクト設定” への13件のコメント

  1. 僕は、こうしてるよ

    RewriteRule ^index\.html?$ / [R=301,L]
    RewriteRule ^default\.html?$ / [R=301,L]

    こうしておくと、index.htm や default.html, default.htm へのアクセスもトップページに飛ばしてくれるのです。

  2. ピンバック: Tweets that mention WordPress へのアクセスを最適化する .htaccess のリダイレクト設定 | Odysseygate.com -- Topsy.com

  3. ピンバック: WordPressハッカーズ

  4. あら!名指しされちゃってますね :P どこか分かれば、修正しますよ〜。

    ちなみに私はこの間こっそり? pretty permalink に移行したので、その時に古いリンク切れとかは修正したつもりだったんですが、コメント欄とかかな。

  5. お世話様です。
    ちょうどWordPressのindex.htmlへのアクセスについての.htaccessについて探していたもので、とても参考になりました。ありがとうございます!

  6. ピンバック: 岡山のヤマト広告オフィシャルブログ » Blog Archive » .htaccess のリダイレクト設定

  7. MTからWordPressに移行するときに、いちばんやっかいなのが、UrLだと思っていて
    躊躇しているところがあります。参考になりました。
    URLを転送するプラグインもあるようですので、それもためしてみようかと思います

  8. ピンバック: WordPressの .htaccess のリダイレクト設定(index.html → index.php) | 星降るコーディング

  9. WordPressを今年こそ覚えたいと思い、いま色々と設定しています。 index.html を index.php にリダイレクトする方法を探していて、非常に助かりました。
    ありがとうございます。

  10. wordpressで、index.html を index.php にリダイレクトする方法で悩んでいたけど、調べるとあっさり適切な書き方がわかった。 @odyssey さんの http://t.co/Q4TmONb8 がすごくわかりやすかったです。

  11. wordpressで、index.html を index.php にリダイレクトする方法で悩んでいたけど、調べるとあっさり適切な書き方がわかった。 @odyssey さんの http://t.co/007sdB7o がすごくわかりやすかったです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <img localsrc="" alt="">