JavaScript重定向:Referer标头问题

Var*_*run 7 javascript http-referer redirect google-analytics

有人跟着博客链接(比如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代码,但没有成功.

Yah*_*hel 11

编辑:新的,推荐的方式

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

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

 document.location = "http://mysite/b.php?utm_referrer=" + encodeURIComponent(location.href); ;
Run Code Online (Sandbox Code Playgroud)

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

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

执行此操作最佳方法是,在重定向之前,将实际引荐来源存储在cookie中,如下所示:

document.cookie = "realreferrer="+encodeURIComponent(document.referrer)+"; path=/";
Run Code Online (Sandbox Code Playgroud)

然后,读取页面上的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);
}
Run Code Online (Sandbox Code Playgroud)