2013/06/19

ブログランキングに悪影響の国別リダイレクトを防ぐ方法【Blogger用】

この記事はグーグルのBloggerを使っているブロガーさん向けです。それ以外の方は無視してください。

この間グーグルアナリティクス(GA)でブログのアクセスを見てみたら、どうもBloggerではアクセス元の国ごとに違うURLに振り分ける機能がついていることがわかりました。これはブログランキングサイトや、ソーシャル系サイトでちょっとした問題を起こします。

ブロガーの国別リダイレクト
これは1つのブログが複数のURLを持っているのと同じ状態で、例えば日本からのアクセスは*.blogspot.jp、アメリカだと*.blogspot.comと、違うURLに自動的に振り分けられてしまいます。

(GAで上の画面を出すには、Audience > Demographics > Location で Secondary dimension を Content > Hostnameにします)

ちなみにこの国別リダイレクトは、地域ごとにコンテンツを管理しやすくするために導入されたそうです。
Bloggerサポート - ブログが国別の URL にリダイレクトされる理由

問題点

問題なのは、同じブログが違うURLに振り分けられることで、別々のブログと認識されることです。

例えばブログ村のようなサイトで*.blogspot.jpでURLを登録していると、海外からのアクセスはINポイントが集計されません。同様に海外ブロガーは、*.blogspot.comで登録していると、日本からのアクセスは*.blogspot.jpからなので、ノーカウントです。

ブログ村の説明ではこうなっています。
Q:その他、ポイントがつかないケースを教えてください
A:あなたのブログサイトのURLが複数ある場合には、ブログ村に登録されたURLからのクリックからしかポイントには反映されません。
詳しくは公式FAQを参照してください。

また同じ記事なのに別々のブログと認識されることで、ツイート、いいね、+1、はてブなどのソーシャル統計が分散してしまいます

対策方法(追記も見てください)

2012年3月以前のように*.blogspot.comに一本化します。具体的には、以下の方法で国別URLを無効化する *.blogspot.com/ncr (no country redirect)ページにリダイレクトします。
  1. 管理画面 > テンプレート > HTMLの編集
  2. (念のため「バックアップ/復元」からテンプレートをダウンロードしてローカルに保存)
  3. </head>タグの上に以下のJSコードを挿入して保存。元に戻したいときはこのコードを削除すればOK。
<script type="text/javascript">
var blog = document.location.hostname;
var slug = document.location.pathname;
var ctld = blog.substr(blog.lastIndexOf("."));
if (ctld != ".com") {
  var ncr = "http://" + blog.substr(0, blog.indexOf("."));
  ncr += ".blogspot.com/ncr" + slug;
  window.location.replace(ncr);
}
</script>
※この方法はググると山ほど出てきてオリジナルがどこだかわかりませんが、一番古そうなここを参考にしました。
元記事は</head>タグの上と書いてありますが、すぐリダイレクトされるよう<head>のすぐ下のほうがいいです。
(追記:上コードによるリダイレクト後はリファラ情報が消えアクセス解析がしにくくなるので、アクセス解析を見ている人は解析コードの後になるように、</head>の上に置くほうがいいと思いました)
※保存すると一部がエスケープされた文字に置き換わりますが、問題ありません
※JSオフのユーザには無効です

テストするには*.blogspot.jpにアクセスして*.blogspot.comにリダイレクトされるかみてみてください。<head>タグ直下にコードを入れた場合は、下のようにGAのHostname欄に*.blogspot.comだけが出てきます。


ブログ村などの登録URLを.comに直すのもお忘れなく。

その他の対策方法

  • 国別振り分けはカスタムドメインには無効なので、カスタムドメインを使うという手もあります。URLは全部変わってしまいますが、Bloggerが自動的にすべて301リダイレクトしてくれます。つまり旧URLでのページはすべてアクセス可、検索エンジンなども同一サイトとみなしてくれます。ただし、ドメイン維持費が年間1000円ぐらいかかるのと、設定がすこし面倒くさいです。
  • ググったらテンプレートの data:post.urldata:post.canonicalUrl に置換する方法も出て来ましたが、これではブログ村のINポイント問題は解決しません。
  • ググるとスクリプトを使った別の方法もでてきます。
    • 2012年3月あたりに紹介されている応急処置の中には、無限ループするものもあるようなので注意。
    • (JSプログラマー向け)match関数のような正規表現を使ったものよりindexOf関数を使った上の対策のほうが100nsオーダーですが、早いはずです。余裕で無視出来る範囲内ですが、プラクティス的に。

Bloggerユーザーには結構知られている問題・解決法なのかもしれませんが、ブログ村は対応してないのブログが多かったので、よかったら試してみてください。

<追記>
数週間後・・・結局ドメインを取ってしまいました。実は上のスクリプトを使った対処方法だと2つ、マイナーな問題があります。

1つはGAなどアクセス解析を使う人向けですが、ページビューがリダイレクト前と後でダブルカウントされたりされなかったりします。そしてGAが読み込まれる前にリダイレクトが起きた場合(BloggerのGAのデフォルト設定のままasyncオプションを使った場合、または<head>内でリダイレクトスクリプトをGAの前に書いた場合)、リダイレクト後はリンク元などのリファラ情報がなくなってしまうので、どういう検索クエリでサイトに来てくれたのか知りたい人などには、この対処法は損です。

もう1つは機種依存の不具合。対処後にpageview/visitが数百になってるケースが出てきたのですが、サムソンSC-02Cというスマホとの相性が悪かったみたいです。ブラウザ側のバグか何かわかりませんが、この対処法が無限ループのような状態を起こしていた可能性も無きにしもあらずでした(下記ログ参照)。



というわけで、その他の対策方法のところに書いたカスタムドメインがおすすめです。
▼記事がお役にたったら、いいね!お願いします♪




0 件のコメント:

コメントを投稿