JavaScript重定向:Referer标头问题

时间:2010-11-11 13:54:24

标签: javascript redirect google-analytics http-referer

有人关注博客链接(说http://blog)来到我的网站(比如http://mysite/a.php)。

所以现在她在页面http://mysite/a.php上,并且referer设置为http://blog

现在页面http://mysite/a.php上有JavaScript,它执行以下重定向:

    document.location = "http://mysite/b.php;
    //This is executed before any Google Analytics script.

现在,在http://mysite/b.php的请求中,referer设置为http://mysite/a.php 因此(我认为如此),我的Google Analytics会显示来自http://mysite/a.php的所有流量。

请提出解决方案。
注意:JavaScript重定向很关键,无法摆脱它 我也尝试从服务器发送302代码,但没有成功。

2 个答案:

答案 0 :(得分:11)

编辑:新的推荐方式

Google Analytics现在有一个特殊的网址参数utm_referrer,您可以将参考者传递到您要重定向到的网页;这样做会模拟与下面相同的行为,而不需要弄乱cookie或函数。

在您的示例中,您将使代码说:

 document.location = "http://mysite/b.php?utm_referrer=" + encodeURIComponent(location.href); ;

旧的,更难但功能性的方式

Google Analytics有一个名为setRefererOverride()的功能。如果您设置它,它将覆盖它跟踪的引用者值到您设置的任何值。

best way to do this是在重定向之前将真实的引荐来源存储在Cookie中,如下所示:

document.cookie = "realreferrer="+encodeURIComponent(document.referrer)+"; path=/";

然后,阅读页面上的cookie值。如果设置了cookie,请在您的综合浏览量之前调用该函数。

var realreferrer = readCookie("realreferrer"); //using a readCookie function of some kind
if (realreferrer) {
 _gaq.push(['_setReferrerOverride', realreferrer ]);
            //if using the old code, use pageTracker._setReferrerOverride(realreferrer);
}

答案 1 :(得分:0)

我认为最干净(也许唯一)的方法是在进行重定向之前触发a.php中的GA计数。

如果这不是一个选项,我可以看到保持推荐人活着的唯一方法是

document.location = "http://mysite/b.php?referrer="+
                    encodeURIComponent(document.referrer);

(将not work in IE under some circumstances

但是,这仍然无法告诉GA相应地设置引荐来源 - 您必须在计算时强制它在Google Analytics上。我不知道这是否可能。