ありがたいことに最近結構なアクセスをいただいています。その分サーバへの負荷も結構なことになっているので、負荷の軽減に取り組んでいるのですが、Google ウェブマスターツール を見ていると、かなりの数の「見つかりませんでした(つまり 404 not found)」が出ていることに気づきました。
404 not found に対しても WordPress が逐一起動してしまうこと、本来なら拾えているアクセスを無駄にしないためにも、これを改善してみることにしました。
Movable Type のときに使用していたアドレスを WordPress にリダイレクト
wokamoto 兄さんに教えてもらった .htaccess を設定したときに、Movable Type 時代に使っていたアドレスから WordPress へとリダイレクトする設定をごっそり消してしまっていました。
以前は
[bash]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[/bash]
みたいなコードを延々100行くらい書いていました。おかげで .htaccess のサイズも肥大化していたので、今回はこれをシェイプアップ。
[bash]RedirectMatch permanent /mt/archives/000(.*)\.php$ /archives/$1
RedirectMatch permanent /mt/ /[/bash]
正規表現はむしろ苦手なほうですが、うまく行っているようです。これで、MT 時代の記事にリンクしていただいたアクセスも、WP へ。”permanet” にしているので、クローラーに対しても移転をお知らせできます。
ちなみに、.htaccess での設定は、上から順に実行/解釈されるそうなので、上記コードは、
[bash]# BEGIN WordPress[/bash]
の一連のコードの前(上)に記載しました。
404 になってしまう /index.html へのアクセスをトップにリダイレクト
さきほども出てきた wokamoto 兄さんの設定
[bash]RewriteCond %{REQUEST_FILENAME} !\.(html?|xml|xsl|js|css|jpe?g|png|gif|ico)$[/bash]
により、実在しないファイルへのアクセスは Apache レベルで 404 を返すようになっています。WordPress では index.php は用意されていますが、index.html は使用しないため、サーバ上もこのファイルはありません。
つまり、/index.html にアクセスすると…
こうなっちゃうわけですな。みじめっ(つд・)
Apache にエラードキュメントを設定しよう!と決意を固めつつ、取り急ぎこれをトップにリダイレクトしたい。なぜなら、Nao さんとか wokamoto 兄さんのページのどこかから、index.html へのリンクがはられてしまっているから(笑)
うんうん唸りながら、結局 hiromasa センセに相談して、下記のようにしました。
[bash]
# 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
[/bash]
よかよか。
ちなみに、以下のようにすると、http://8bitodyssey.com/index.htmlだけでなく、http://8bitodyssey.com/naokomc/index.html のような存在しないindex.htmlへのアクセスをトップにリダイレクトしてくれます。
[bash]RewriteRule index.html http://8bitodyssey.com/ [R=301,L][/bash]
まぁどっちがよいかはあなた次第。ないものはないって表示したほうがよい気がしますけど、いちいち WordPress 起動するのもねぇ。
さて、これで負荷がどうなりますか。
“WordPress へのアクセスを最適化する .htaccess のリダイレクト設定” への12件のフィードバック
僕は、こうしてるよ
RewriteRule ^index\.html?$ / [R=301,L]
RewriteRule ^default\.html?$ / [R=301,L]
こうしておくと、index.htm や default.html, default.htm へのアクセスもトップページに飛ばしてくれるのです。
をかもとさん、ありがとう!
直してみましたっ!
[…] This post was mentioned on Twitter by Odyssey / おで. Odyssey / おで said: ブログった~: WordPress へのアクセスを最適化する .htaccess のリダイレクト設定 http://8bitodyssey.com/archives/1605 #wordpress […]
WordPress へのアクセスを最適化する .htaccess のリダイレクト設定 | Odysseygate.com
この記事は以下サイトで紹介されています。 WordPressハッカーズ
あら!名指しされちゃってますね :P どこか分かれば、修正しますよ〜。
ちなみに私はこの間こっそり? pretty permalink に移行したので、その時に古いリンク切れとかは修正したつもりだったんですが、コメント欄とかかな。
>Nao さん
面白かったので、例にあげてみましたw
http://detlog.org/2005/02/03/itunes-smart-shuffle/
を経由して、グーグルボットくんが index.html に来ているみたいなんですが、ソースを見ても見あたらないんですよねぇ。
なんでなのかしら。でも、こちらで対応したからきっと大丈夫ですw
お世話様です。
ちょうどWordPressのindex.htmlへのアクセスについての.htaccessについて探していたもので、とても参考になりました。ありがとうございます!
[…] 旧サイトから新サイトに移転するときに URLが変わってしまったりする場合、 .htaccessでこの設定をしておけば 検索エンジンで表示されていた旧サイトを開くと新サイトに飛ぶことができるのです。 詳しくはこちらにて […]
MTからWordPressに移行するときに、いちばんやっかいなのが、UrLだと思っていて
躊躇しているところがあります。参考になりました。
URLを転送するプラグインもあるようですので、それもためしてみようかと思います
[…] 適切な書き方はないかと調べていくと、@odyssey さんの WordPress へのアクセスを最適化する .htaccess のリダイレクト設定 の記載の仕方が一番参考になりました。 […]
WordPressを今年こそ覚えたいと思い、いま色々と設定しています。 index.html を index.php にリダイレクトする方法を探していて、非常に助かりました。
ありがとうございます。
[…] 参考サイトはこちらです http://8bitodyssey.com/archives/1605 […]