Blogger(blogspot.com)をよそへリダイレクトする方法

ウェブのURLを変更する場合、301リダイレクトをすると検索エンジンが「URLが変更になったんだな」と認識してくれることになっていますが、Bloggerからよそへひっこす場合、定番の.htaccessを使った方法やPHPのスクリプトを使う方法がつかえません。かわりの方法を試してみたのでメモしておきます。

手順は以下のとおり。

  1. 移転元のBloggerから、移転先のWordpressへ記事をインポートしておく。パーマリンクも同じにしておく。
  2. 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"/>
    
  3. 同じく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=&#39;your.new.blog.domain.com/newdir/&#39;;
    var permalink = &#39;<data:post.url/>&#39;;
    var timestamp = &#39;<data:post.timestampISO8601/>&#39;;
    timestamp = timestamp.split(&#39;-&#39;);
    timestamp = timestamp[0]+&#39;/&#39;+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扱いを
してくれているかどうかはわかりませんが….

参考文献

  1. How To Redirect Blogger Beta To WordPress.Com, laffers.net, 2007
  2. 301 Moved Permanentlyでウェブサイトを転送する方法, たんきゅうラボ, 2006