web-dev-qa-db-ja.com

mod_rewriteをサブドメインにリダイレクトしながら、Google Analyticsでサブドメインを追跡するにはどうすればよいですか?

ユーザーがdomain.comまたはwww.domain.comに直接アクセスすると、次の.htaccessの書き換えによってshop.domain.comにリダイレクトされます。

RewriteEngine on
RewriteCond %{HTTP_Host} ^www.domain.com$ [OR]
RewriteCond %{HTTP_Host} ^domain.com$ 
RewriteRule ^(.*)$ http://shop.domain.com/ [R=301,L]

Shop.domain.comによって配信されるコンテンツには、次のトラッキングコードパラメーターがあります。

var _gaq = _gaq || [];
_gaq.Push(['_setAccount', 'UA-123456-6']);
_gaq.Push(['_setDomainName', '.domain.com']);
_gaq.Push(['_trackPageview']);

shop.domain.comからの書き換えの結果としてdomain.comに到達するすべての直接訪問は、参照トラフィックとして追跡され、Google Amalyticsの参照ソースとして自分のdomain.comを表示します。

これらの訪問をノーリファラーとして追跡したいと思います。

独自のドメインから直接トラフィックとして送信されるサブドメインのmod_rewrittenトラフィックを追跡するように構成を変更するにはどうすればよいですか?

4
Marek

リファラー情報をオーバーライドする代わりに、Google Analyticsが保存するリファラー無視リストにサブドメインを追加する必要があります。

これを行うには、GA AP​​Iの_ addIgnoredRef()メソッドを使用します。

メソッドのGoogleの説明:

_ addIgnoredRef()

ソースを参照サイトとして除外します。特定の参照リンクを参照サイトとしてではなく、直接トラフィックとして設定する場合は、このオプションを使用します。たとえば、会社が直接トラフィックとして追跡する別のドメインを所有しており、「参照サイト」レポートに表示されないようにする場合があります。除外された紹介からのリクエストは、引き続きページビュー全体のカウントにカウントされます。

http://code.google.com/apis/analytics/docs/gaJS/gaJSApiSearchEngines.html#_gat.GA_Tracker_._addIgnoredRef

注:Googleの例は、100%正確ではない場合があります。詳細な説明と実装例については、次のリンクをご覧ください。

http://www.roirevolution.com/blog/2011/01/google_analytics_subdomain_tracking.php

3
Ciaran

次の例では、httpからhttpsに切り替えるときにリファラーを保持する方法について説明します。

あなたの.htaccess

RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{SERVER_NAME}/$1?referrer=%{HTTP_REFERER} [L,QSA,R=301]

Googleアナリティクスの呼び出し:

(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).Push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-xxx-y', 'auto');
ga('set', 'anonymizeIp', true);
try {
  var match = /.*[?&]referrer=(.*)/.exec(window.location.href);
  if (match && match.length > 1) {  
      var _from = decodeURIComponent(match[1]);
      if (_from && _from.length > 0) {
          console.log('Override referrer:', _from);
          ga('set', 'referrer', _from);
      }
  }
} catch (err) { ; }
ga('send', 'pageview');
2
Holtwick

Google Analyticsが使用しているリファラーをオーバーライドできます。詳細については、 _ setReferrerOverride のドキュメントをご覧ください。

この正しいリファラーを何らかの方法で提供するには、301リダイレクト経由で渡す必要があります。リダイレクトされたURLにクエリパラメータを追加し、この情報をdocument.locationから抽出するjavascriptスニペットを作成することをお勧めします。

JavaScriptをGAコードに追加する例:

var _gaq = _gaq || [];
_gaq.Push(['_setAccount', 'UA-XXXXXXXX-1']);
var _from = unescape(window.location.href.replace(/.*[?&]from=(.*)/,'$1'));
if (_from && _from.length > 0) {
  _gaq.Push(['_setReferrerOverride',_from]);
}
_gaq.Push(['_trackPageview']);

また、リファラーが存在する場合にmod_rewriteを使用してリファラーを転送する例:

RewriteCond %{HTTP_Host} ^domain.com\.com$ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} (.*)
RewriteRule ^(.*)$ http://shop.domain.com/$1?from=%1 [R=301,QSA,L]

RewriteCond %{HTTP_Host} ^domain\.com$ [NC]
RewriteRule ^(.*)$ http://shop.domain.com/$1 [R=301,L]

Www.domain.comについても上記を繰り返す必要があります。

2
Evgeny