ユーザーが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トラフィックを追跡するように構成を変更するにはどうすればよいですか?
リファラー情報をオーバーライドする代わりに、Google Analyticsが保存するリファラー無視リストにサブドメインを追加する必要があります。
これを行うには、GA APIの_ addIgnoredRef()メソッドを使用します。
メソッドのGoogleの説明:
_ addIgnoredRef()
ソースを参照サイトとして除外します。特定の参照リンクを参照サイトとしてではなく、直接トラフィックとして設定する場合は、このオプションを使用します。たとえば、会社が直接トラフィックとして追跡する別のドメインを所有しており、「参照サイト」レポートに表示されないようにする場合があります。除外された紹介からのリクエストは、引き続きページビュー全体のカウントにカウントされます。
注:Googleの例は、100%正確ではない場合があります。詳細な説明と実装例については、次のリンクをご覧ください。
http://www.roirevolution.com/blog/2011/01/google_analytics_subdomain_tracking.php
次の例では、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');
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についても上記を繰り返す必要があります。