無料ブログから独自ドメインに引っ越すときに便利。忍者ブログから独自ドメインにjavascriptでリダイレクトをかける方法
前回のブログからの続きです。
無料ブログから独自ドメインに引っ越すときに301リダイレクトが出来ればベストなのですが、それが不可能な場合、以下の4通り方法が考えられます。
- meta refreshで0秒指定にして飛ばす
- 無料ブログはそのまま残し、「○○.comに移転しました」と表記しておく
- 無料ブログは削除してしまう
- javascriptのlocation.hrefで飛ばす
結論としては、4番の方法が一番現実的だと思うのですが、順に説明していきます。
1.meta refreshで0秒指定にして飛ばす方法について
meta refreshとはhead内に記述するmeta要素のことで、以下のように記述します。
<meta http-equiv="refresh" content="0;URL=http://example.com">
content内の数字(上の例だと0)は、転送する秒数をあらわし、URL=に書いたページに0秒後にリダイレクトさせる、という書き方です。
このmeta refreshでリダイレクトさせる方法だと、0秒指定にしておくとgoogle側では301リダイレクトと同等に扱ってくれるという情報があります。
しかし、一つ問題があります。
ココに記述するURLはトップページはトップページに、記事ページは対応する記事ページのURLを記載しなければいけません。
ですが、無料ブログではPHPを使うことが出来ないため、このURLを各ページごとに動的に書き換える事ができません。
「だったらすべて新しい独自ドメインのトップページにリダイレクトさせてしまおう」という方法をとりがちなのですが、これが問題なのです。
今月頭に話題になった話なのですが、PCサイトからスマホサイトにリダイレクトをかける際、下層の個別ページへのアクセスもすべてトップページにとばしてしまうというような誤った設定のサイトは調整する(手動ペナルティを課す)というような話がありました。
PCからスマホサイトへの転送をすべてトップページに送るのがNGなら、無料ブログから別の独自ドメインへの転送もすべてをトップページに行うのはこれも同様にNGとなります。
せっかく無料ブログで培った評価を独自ドメインに持ち越そうと思っていたのに、逆にペナルティを食らってしまってはしゃれになりません。
ネット上では「301 redirectが使えないなら、meta refreshでやりましょう」と解説する記事はたくさんありますが、この問題点に触れた記事はほとんどありませんでした。
「meta refreshがいいらしい」と聞いてうのみにしないように、気をつけてください。
もし、あなたがお使いのブログの独自テンプレートタグでドメイン部分を除いたページURLが取得出来れば、meta refreshのURLも動的に作れますので、この方法はもちろんベストなのですが、今までそういうブログサービスを見たことはありませんので、もしご存じの方がいたらコメント欄かお問い合わせから教えてください。
2.無料ブログはそのまま残し、「○○.comに移転しました」と表記しておく
この方法はワーストではありませんが、あまり好ましいとは言えません。
まず、googleにとってはこの「移転しました」表記は301でもリダイレクトでもなんでもなく、ただのリンク表示でしか有りません。
当然通常のリンクの場合のリンクジュースの受け渡しはあるとしても、301のように7-8割の評価を持ち越すなんて事はあり得ません。
また、閲覧者にとっても「移転しました」表記はただのリンクであり、見逃すこともありますし、無視してそのまま旧ブログを見続けることも出来ますので
新しいブログに来てくれるかは閲覧者自身の判断にゆだねられます。
つまり、googleに対しても閲覧者にも中途半端な対応と言えます。
3.無料ブログは削除してしまう
旧ブログと独自ドメインの新サイトでの重複コンテンツを恐れての選択肢だとは思うのですが、これは最悪の方法です。
今まで集めてきたページランクも捨て、さらに今まで集めた閲覧者さえも捨ててしまう事になりますので、一番やっちゃいけません。
それだったら、重複コンテンツでもなんでもそのまま残しておいた方がまだいいとおもいます。
4.javascriptのlocation.hrefで飛ばす
長くなりましたが、一番ベターだと思う方法はこれです。
まずはそのコードの書き方をお見せします。
各ブログによってテンプレートタグが違うと思うので、今回は忍者ブログでの場合で説明します。
var new_url = "http://example.com/"; //移転先のURLを入力(末尾にスラッシュ付き) var this_url = "<!--$g_page_url-->"; //忍者ブログの独自タグで現在のページのURLを取得 var blog_url = "<!--$g_url-->"; //忍者ブログのドメインを取得(末尾にスラッシュ付き) var redirect_url = this_url.replace(blog_url,new_url); //現在のページのURLからドメインを置換 /*setTimeout("redirect()", 0);*/ //リダイレクト関数を0秒で実行 function redirect(){ location.href=redirect_url; //redirect_urlにリダイレクト }
一行目に移転先のURLを指定します。
現在のURLを取得し、そのURLからドメイン部分を移転先のドメインに置換して、redirect_urlに代入。
location.hrefでそのURLにリダイレクトする関数を作り、setTimeout()で0秒で実行させています。
ほとんどの無料ブログでもページURLを取得するテンプレートタグは存在すると思いますので、それを元にドメイン部分を置換してあげると、
まとめてトップページへの転送では無く対応する各ページに対してのリダイレクトを行うことが出来ます。
この方法で、301リダイレクト同様にページランクを引っ越せるかどうかはまだわかりません。ただ、以前はjavascriptのリンクはすべて無視されていたのが、複雑ではないjavascriptならgoogleロボットも理解できるようになってきています。リンク先の記事は2009年の時点なので、今は更に進化しており、301リダイレクト同等の効果を期待して良いのではないでしょうか?
もしねらったような評価の受け渡しがダメだったとしても、少なくともまとめてトップページへmeta refreshした場合のような不自然な構造によるペナルティの可能性は圧倒的に低くなります。
また、閲覧者に取ってはほとんど意識させることが無く新サイトへ自動で誘導出来ますので、ユーザビリティは今回挙げた4つの方法の中では一番イイと思います
.
いかがでしょうか?
301リダイレクトが使えない場合のサイト移転では、条件付きでmeta refreshがいい(個別URLを動的に生成して指定出来る場合)けど、ほとんどの場合はjavascriptのlocation.hrefで飛ばす方法がいいんじゃないか、という理由とその設置方法でした。
反論意見など、遠慮無く受け付けていますので、どしどしコメントしてください。