Google Analytics功能篇—跨域追踪

跨域追踪是在实施Google Analytics中经常遇到的问题。通常Google Analytics会在你第一次为网站创建配置文件时要求输入一个追踪网站的网址,并以这个网址作为网站的主域。在追踪过程中,来自其他域的流量将被标识为推介网站的流量,显示在流量来源的推介来源报告中。

添加新配置文件

PS:这里输入的是网站域名,而不是配置文件名称。

什么是“域”

“域”是互联网中用来对虚拟区域进行定位的概念。比如.com;.net,.edu;.gov;.org都是互联网中不同的域。代表不同属性的虚拟区域。.cn和.cc也是域,代表互联网中不同国家的虚拟区域。这些都属于顶级域。

“域名”是对域所代表的虚拟区域进一步的定位。通常用来标识我们网站的地址。比如我的域名,顶级域是.cc说明我的网站属于互联网中.cc这个属性的虚拟区域。 bluewhale是对.cc这个虚拟区域内更小区域的标识(名称),用来区分.cc区域中不同的虚拟区域。当访问者输入bluewhale.cc就定义到了互联网.cc虚拟区域中我的博客网站。这就是我的域名。这同时也说明了另一个问题,域名是不带www的。

www和ftp,mail一样,是对域名下所提供服务的进一步标识。同一个域名可以提供不同的服务。比如:www.bluewhale.cc  ftp.bluewhale.cc和mail.bluewhale.cc 。同样,如果你的域名下提供了更多的服务,也可以自定义这些服务标识,比如提供新闻服务的频道可以使用news,提供博客服务的频道可以使用blog。这些都属于bluewhal.cc域名的二级域名。唯一的区别就是,www和ftp等等是默认的服务名称。News和blog是自定义的服务名称。

域是分等级的,域的等级体现在域名中,以顶级域开始从右至左级别逐层递减。其中任何一个级别的标识不一样都说明他们不属于同一个域。本篇所说的跨域追踪就是指配置Google Analytics跨越不同的域来追踪访客的行为。

常见的问题

很多朋友问为什么在我们的Google Analytics流量来源报告中会把子域作为推介来源,为什么还会有带www或不带www的域名流量被识别为来自推介流量。因为他们是不同的域,及时是同一域名下的不同子域。Google Analytics对域设定域哈希值,并通过哈希值来识别不同的子域。默认情况下Google Analytics将所有不属于主域的流量来源都标识为推介来源。

我推荐的做法

访问网站时输入www已经是访问者习惯的做法了。但不论从网站分析的角度和是SEO的角度来看,一个网站最好只有一个唯一的域名。所以,最好的做法是以不带www的域名作为网站的主域名,把带有www的域名301重定向到主域名上。这样无论是对网站的访问者还是搜索引擎都是友好的。同时在追踪上也省了不少麻烦。

蓝鲸301跳转

跨域追踪的分类:

Google Analytics的跨域追踪分为两类,第一类是跨子域追踪,第二类是跨根域追踪。这两种方法在实施时会有差别。通常跨子域追踪比较简单,是每个网站都会用到的。跨根域追踪主要是为电子商务类网站在访客支付时跨越第三方支付平台设计的。

什么是子域

子域是指同一域名下不同的二级域。这些子域都属于相同的域名下。比如:

www.bluewhale.cc和blog.bluewhale.cc都属于bluewhale.cc的不同子域。

什么是根域

根域是指通一顶级域的不同标识区域(不同域名),或不同的顶级域区域。比如:

bluewhale.cc和bluewhale.com和google.com属于不同的根域。

跨子域追踪

Google Analytics跨子域追踪

当你的域名下有多个子域名的时候,默认情况下Google Analytics会为每个子域名分别设置cookie,并在不同的cookie中设置不同子域的哈希值。以我的博客为例(上图)在Google Analytics的追踪代码下加入

pageTracker._setDomainName(".bluewhale.cc);

告诉Google Analytics要追踪的域范围,并不在为不同的子域单独设置cookie。

如果实施跨子域追踪

在网站中所有页面的追踪代码里加入下面蓝色的内容,括号中的文字替换成网站域名。

<script src="http://www.google-analytics.com/ga.js"></script>
<script>
var pageTracker = _gat._getTracker("UA-12347890-1");
pageTracker._setAllowHash(false);
pageTracker._setDomainName(".bluewhale.cc);
pageTracker._trackPageview();
</script>

如果是初次在网站实施代码,到这里就可以了。但如果是修改已有的追踪代码,可能会有这种情况:新访问网站的访客将只被设置一组cookie,但原有的老访客因为还保留有子域名的cookie,所以有可能还会产生来自子域名的推介。(应该会自动将不同子域的cookie域哈希值统一,记不太清了。) 解决的方法是加入代码中的红色部分。关闭cookie中的域哈希。(所有cookie中的域哈希值都将变为1)

跨根域追踪

Google Analytics跨根域追踪

Google Analytic使用第一方cookie,所以无法跨域追踪访问的行为。所以当遇到网站分别在几个根域上或是访客的行为要跨越根域时(比如电子商务网站的第三方支付平台)。需要单独对追踪代码和页面上的链接进行设置,来达到跨域追踪的目的。在上图中,访客分别使用按钮跨越了两个不同的根域。这种情况下,要分别对两个页面的追踪代码和按钮链接进行设置。

如何实施跨根域追踪

首先分别在两个根域的页面追踪代码里添加下面的代码。

pageTracker._setDomainName("none");
pageTracker._setAllowLinker(true);

然后将在bluewhale.cc(根域1)页面中指向google.com(根域2)的链接修改为:(增加了蓝色部分的代码)

<a href="http://google.com" onclick="pageTracker._link('http://google.com');return false;">Go Google</a>
将google.com(根域2)页面中指向bluewhale.cc(根域1)的链接修改为:
<a href="http://bluewhale.cc" onclick="pageTracker._link('http://bluewhale.cc');return false;">Go Bluewhale.cc</a>

如果是使用表单形式发送信息,改为调用_linkByPost 函数即可。

OK,到这里已经基本解决了Google Analytic流量来源报告里网站自推介的问题和跨根域追踪的问题了。从此数据恢复正常。建议实施完跨域追踪后在控制台添加新注释。方便日后查找。因为跨域追踪可能在访客数量等多个指标上对网站的整体数据造成影响。

Google Analytic的实施还是个有点复杂的工作。建议在为网站初次添加追踪代码时就做好这些设置,避免产生错误数据。

——【所有文章及图片版权归 蓝鲸(王彦平)所有。欢迎转载,但请注明转自“蓝鲸网站分析博客”。】——

Comments

  1. 网上书店 says:

    做了跨子域跟踪,观察效果中。
    想问一下,一般多久之后数据才会生效呢?

  2. 网上书店 says:

    为啥我关闭了hash值还是不行呢?
    检查了代码,,没有问题呀。
    博主知道么?

  3. stella says:

    为什么我做了跨子域的设置,并且确定代码加的很完整,但依旧有不带www的域名流量被识别为来自推介流量。

  4. Jeux says:

    Google Analytics功能篇—跨域追踪 | 蓝鲸的网站分析笔记

  5. 夜瑞Reicy says:

    大神求联系方式。不是很明白跨域

Trackbacks

  1. […] Google Analytics功能篇—跨域追踪 | 蓝鲸的网站分析笔记 […]

  2. […]     网上有很多的资料,首先可以看看Google官方的资料:域和目录、跨域跟踪.这两篇文章详细的解释。另外也可以看看这些:Google Analytics功能篇—跨域追踪、警惕网站分析监测实施的陷阱(上)。 […]

  3. […] 网上有很多的资料,首先可以看看Google官方的资料:域和目录、跨域跟踪.这两篇文章详细的解释。另外也可以看看这些:Google Analytics功能篇—跨域追踪、警惕网站分析监测实施的陷阱(上)。 […]

Speak Your Mind

*