ウェブのURLを変更する場合、301リダイレクトをすると検索エンジンが「URLが変更になったんだな」と認識してくれることになっていますが、Bloggerからよそへひっこす場合、定番の.htaccessを使った方法やPHPのスクリプトを使う方法がつかえません。かわりの方法を試してみたのでメモしておきます。
手順は以下のとおり。
- 移転元のBloggerから、移転先のWordpressへ記事をインポートしておく。パーマリンクも同じにしておく。
- Bloggerの「レイアウト」「HTMLの編集」で、<header>と</header>の間に下記の2行をいれる。
<meta content='0;url=http://your.new.blog.domain.com/newdir/' http-equiv='refresh'/> <meta name="ROBOTS" content="NOINDEX, NOFOLLOW"/>
- 同じくBloggerの「レイアウト」「HTMLの編集」で、「<b:section class=’main’ id=’main’ showaddelement=…」のすぐあとに以下のコードをいれる。
<b:widget id='Redirector' locked='true' title='Blog Posts' type='Blog'> <b:includable id='main'> <b:if cond='data:blog.pageType == "item"'> <b:loop values='data:posts' var='post'> <script type='text/javascript'> var new_page='your.new.blog.domain.com/newdir/'; var permalink = '<data:post.url/>'; var timestamp = '<data:post.timestampISO8601/>'; timestamp = timestamp.split('-'); timestamp = timestamp[0]+'/'+timestamp[1]; new_page = permalink.replace(/youroldblog.blogspot.com/20[0-9]{2}/[0-9]{2}/,new_page+timestamp); document.location.href = new_page; </script> </b:loop> </b:if> </b:includable> </b:widget>
このコードでは移転元と移転先のパーマリンクがwordpressでいうところの「/%year%/%monthnum%/%postname%.html」であるということを前提としています。ちがう場合は、timestampあたりを適当に修正してください。このコードは参考文献[1]をベースに、おかしいところを多少変更しました。
「1.」が案外むづかしい。ふつうにインポートすると、パーマリンクが保存されません。記事の数が多い場合は困るね。要検討です。
「2.」の meta http-equiv=’refresh’は正確には301リダイレクトにはなりませんが、Yahoo!やGoogleは転送前の時間が0または1の場合は301として、それより大きい場合は302として扱うそうです(参考文献[2])。なので、これでよしとしよう。
というわけで、ためしにやってみました。http://unixjp.blogspot.com/2006/05/blog-post.htmlにアクセスすると、http://narak.jp/wptest/2006/05/blog-post.htmlへリダイレクトされるようにしました。Google/Yahoo!が301扱いを
してくれているかどうかはわかりませんが….
参考文献
- How To Redirect Blogger Beta To WordPress.Com, laffers.net, 2007
- 301 Moved Permanentlyでウェブサイトを転送する方法, たんきゅうラボ, 2006