谷歌分析跨域追踪和_setDomainName()

21

我正在尝试在两个完全不同的域之间设置跨域跟踪(不是子域)。浏览谷歌文档的不同页面似乎给了我关于在_setDomainName方法中放置什么的不同建议。

我无法确定应该使用其中哪一个:

_gaq.push(['_setDomainName', 'mysite.com']);
_gaq.push(['_setDomainName', '.mysite.com']);
_gaq.push(['_setDomainName', 'none']);

有没有人可以给我一些指导或解释?

4个回答

21

Ben,最好的解释在Google文档页面上 - http://code.google.com/apis/analytics/docs/tracking/gaTrackingSite.html#domainToNone。请了解这个页面,有很多方法可以配置您的GA设置,并且没有确定性的说法“这是您需要设置跨域跟踪的方式”,除非更多地了解您所需的配置。该页面上的场景肯定会有所帮助。

使用不同变体的_setDomainName有3个明显的原因:

  • 'none' - 您只需要在想独立跟踪顶级域时使用此功能,因为此参数将使域的cookie对其子域不可访问。

  • 'mysite.com' - 在跟踪来自另一个域的子目录和域之间的跟踪时,请使用此选项。例如,您的'mysite.com'配置文件还应记录'yourblog.othersite.com'的点击量。

  • '.mysite.com' - 当您想跨域及其子域进行跟踪时,请使用此选项。这将把顶级和子域视为一个实体并在同一配置文件中进行跟踪。例如,'mysite.com'配置文件应记录'blogs.mysite.com'和'shop.mysite.com'。

我建议设置一些测试配置文件并尝试进行配置,以避免“弄脏”真实数据。

希望这可以帮助您!


我已经阅读了关于Google页面的内容大约100次。你的解释确实有助于我更好地理解它。我发现对于我的情况,示例代码告诉我,我的主站点(mysite.com)应该将_setDomainName设置为“mystie.com”,但是另一个站点(my-ecommerce.com)应该将_setDomainName设置为“none”。不过我不确定为什么要这样做。 - Ben
你确定吗?我理解“none”的意思是你想确保子域名不会被该配置文件跟踪。在你的例子中,我认为你应该在该网站上将其设置为“mysite.com”以及在“my-ecommerce.com”上设置。希望你能快速测试这个理论,而不会对你的数据产生任何不良影响。你可以使用新的实时报告来设置和采样,以查看是否正确跟踪。 - shanabus
是的。如果您查看文档的此部分:http://code.google.com/apis/analytics/docs/tracking/gaTrackingSite.html#domainAndSubDirectory,您将看到在“主”站点上使用URL,而在“博客”站点上使用“none”。我正在对一些测试站点进行干净的安装以测试所有内容,但首先尝试尽可能减少未知因素。感谢您的意见。 - Ben
非常好。现在,当我创建一个新的网站时,我会将Dev、QA和Live配置文件作为标准实践。这样我就可以轻松地将测试数据从生产GA报告中分离出来。 - shanabus
回复:'none' -- 我认为定义是错误的,实际上是相反的。将_setDomainName设置为“none”实际上允许所有域共享cookie数据。请参见:http://www.seotakeaways.com/cross-domain-tracking-google-analytics-works/ - Alex Czarto

8
文档页面进度有些滞后,因为最近有一些更改,使得最佳操作方式发生了变化。 _setDomainName 的默认设置是 'auto'。这会将 cookie 设置为您的完整域名,除非您在 www 域上,在这种情况下,它会将其设置为没有前导点的 mysite.com。这个设置可能会导致问题,我建议避免使用它。我总是进行更改。
有两个选项可以设置 www.mysite.com 的域名。
  • _setDomainName('.mysite.com') -> 如果要跟踪所有子域,则必须这样做。
  • _setDomainName('www.mysite.com') -> 如果不想跟踪子域,则应该使用此选项。
99%的情况下,我都会选择第一个选项。将其设置为顶级域,但使用前导点。 您会看到很多人反对前导点。就像来自Roirevolution 的这篇旧但好的文章。关于前导点的担忧是它可能会导致 cookie 重置。但如果某人已经有了 cookie,那么才会发生这种情况。如果这是一个新的实现,您就不会遇到这个问题。 _setDomainName('none') 相当于 _setDomainName('auto') + _setAllowHash(false)。但由于 _setAllowHash(false) 已被弃用,我想 _setDomainName('none') 也应该被弃用。

我已将域名设置为www.mysite.com,但GA仍将cookie域设置为.mysite.com,从而破坏了我的CDN子域。那么,我应该使用none吗? - Nic Cottrell
回复:'none' -- 将_setDomainName设置为'none'实际上允许所有域共享cookie数据。请参见:http://www.seotakeaways.com/cross-domain-tracking-google-analytics-works/ - Alex Czarto

2
如果它是跨域的
tracking,_gaq.push(['_setDomainName', 'mysite.com']);

或者

_gaq.push(['_setDomainName', '.mysite.com']);

“不会有任何影响,因为cookie信息无论如何都不会在这两个不同的域之间共享。”
“我已经在域1和域2之间设置了单向跟踪。最初按照Google Analytics的建议,在这两个域上都添加了_gaq.push(['_setDomainName','none']);。这是为了进行新的Google Analytics A/B测试,但验证A/B测试时出现错误。所以,我从域1中删除了_gaq.push(['_setDomainName','none']);,并将其保留在域2中,结果非常完美。”
我在这里记录了它。”

为了防止此内容被删除为“不是答案”甚至是垃圾邮件,这里需要一些摘要。 - Andrew Barber

0

我认为mysite.com将跟踪该站点及其第一级子域(如mysite.comcats.mysite.com),而.mysite.com将跟踪该站点及其第一和第二级子域(如mysite.comcats.mysite.comstore.cats.mysite.com)。

我基于Google和其他一些文章的说法得出这个结论。

none将禁止任何子域跟踪(因此我认为它将设置cookie的域为:www.mysite.com)。

我猜测默认选项auto将通过document.domain设置为www.mysite.com(但如果不在www域上,可能会根据Eduardo的答案设置为mysite.com,以允许更智能的第一级子域跟踪)。

auto/none 是我猜测的,如果你访问 blah.mysite.com 并使用了这些 none/auto 选项,我无法确定它会为域名设置什么。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接