ありがたいことに最近結構なアクセスをいただいています。その分サーバへの負荷も結構なことになっているので、負荷の軽減に取り組んでいるのですが、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 にアクセスすると…

こうなっちゃうわけですな。みじめっ(つд・)
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 起動するのもねぇ。
さて、これで負荷がどうなりますか。















僕は、こうしてるよ
RewriteRule ^index\.html?$ / [R=301,L]RewriteRule ^default\.html?$ / [R=301,L]
こうしておくと、index.htm や default.html, default.htm へのアクセスもトップページに飛ばしてくれるのです。
をかもとさん、ありがとう!
直してみましたっ!
ピンバック: Tweets that mention WordPress へのアクセスを最適化する .htaccess のリダイレクト設定 | Odysseygate.com -- Topsy.com
ピンバック: WordPressハッカーズ
あら!名指しされちゃってますね
どこか分かれば、修正しますよ〜。
ちなみに私はこの間こっそり? pretty permalink に移行したので、その時に古いリンク切れとかは修正したつもりだったんですが、コメント欄とかかな。
>Nao さん
面白かったので、例にあげてみましたw
http://detlog.org/2005/02/03/itunes-smart-shuffle/
を経由して、グーグルボットくんが index.html に来ているみたいなんですが、ソースを見ても見あたらないんですよねぇ。
なんでなのかしら。でも、こちらで対応したからきっと大丈夫ですw
お世話様です。
ちょうどWordPressのindex.htmlへのアクセスについての.htaccessについて探していたもので、とても参考になりました。ありがとうございます!
ピンバック: 岡山のヤマト広告オフィシャルブログ » Blog Archive » .htaccess のリダイレクト設定
MTからWordPressに移行するときに、いちばんやっかいなのが、UrLだと思っていて
躊躇しているところがあります。参考になりました。
URLを転送するプラグインもあるようですので、それもためしてみようかと思います
ピンバック: WordPressの .htaccess のリダイレクト設定(index.html → index.php) | 星降るコーディング
WordPressを今年こそ覚えたいと思い、いま色々と設定しています。 index.html を index.php にリダイレクトする方法を探していて、非常に助かりました。
ありがとうございます。
wordpressで、index.html を index.php にリダイレクトする方法で悩んでいたけど、調べるとあっさり適切な書き方がわかった。 @odyssey さんの http://t.co/Q4TmONb8 がすごくわかりやすかったです。
wordpressで、index.html を index.php にリダイレクトする方法で悩んでいたけど、調べるとあっさり適切な書き方がわかった。 @odyssey さんの http://t.co/007sdB7o がすごくわかりやすかったです。