HTTP重定向中的引用


HTTP Referrer on Redirection

我有一个小脚本,如果用户来自我/其他远程站点的横幅,则将用户重定向到主站点。

<?
.
..
...
....
header("location:$golink"); 
?>

但是google分析不会显示推荐站点(脚本工作的地方),而是显示点击横幅的url。显然,我不能保持跟踪所有网站的横幅出现,不想。我想指的是该网站的脚本是工作。我必须如何使用$_SERVER['HTTP_REFERER'];才能做到这一点?

GA有一个方法,可以让您用指定的值覆盖默认的引用URL (document.referrer)。

因此,如果您想保持重定向服务器端,您可以在header()调用中附加引用URL作为查询字符串参数,然后在目标页面上查找它并将其指定为引用URL。

我不知道你是如何构建你的$golink变量的,但基本上你会添加一些东西沿着行:

$golink .= "?ref=" . $_SERVER['HTTP_REFERER'];

如果已经有URL参数,则使用&而不是?,并且上面的代码假设使用ref作为URL参数,因此使用您想要的任何变量。

然后在您的目标页面上,在_trackPageview调用之前,您将添加

_gaq.push(['_setReferrerOverride', ref]);

ref将是一个javascript变量,其值为ref=xxx查询字符串参数。由于某些奇怪的原因,Javascript没有原生的方法来获取URL参数值,GA也没有提供(公开的)解决方案。如果你已经在你的页面上有一个抓取URL参数的解决方案(比如你已经制作的框架或函数),那么使用它。否则,很容易找到一个javascript函数来帮你完成。

这样做有几个好处:

  1. 你不必担心访问者会看到插页。
  2. 你不必担心GA在重定向前没有机会完全加载
  3. 你可以看到直接链接到你的登陆页面的引荐人,因为有了插页,你总是会看到这个插页作为引荐人,并且必须查看插页的引荐url报告。

是的,G.A对这种服务器端东西视而不见。而且他们的PHP Api也没什么用。

但是,您可以有一个简短的重定向页面,其中包含GA标记,像这样:

<html>
<head>
<title>A web page that points a browser to a different page after 2 seconds</title>
<meta http-equiv="refresh" content="2; URL=<?php  echo $golink; ?>">
<meta name="keywords" content="automatic redirection">
<script>var _gaq=[['_setAccount','UA-XXXXX-X'],['_trackPageview']];(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.src='//www.google-analytics.com/ga.js';s.parentNode.insertBefore(g,s)}(document,'script'))</script>
</head>
<body>
If your browser doesn't automatically go there within a few seconds, 
you may want to go to 
<a href="<?php echo $golink ?>">the destination</a> 
manually.
</body>
</html>

注意meta标签中的$golink变量。

如果您使用此选项,请不要忘记将UA-XXXXX-X替换为您的真实帐号。

credit:优化的GA标签归Mathias Bynens

<html>
<head>
<title>Redirecting you...</title>
<script>var _gaq=[['_setAccount','UA-XXXXX-X'],['_trackPageview']];(function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];g.src='//www.google-analytics.com/ga.js';s.parentNode.insertBefore(g,s)}(document,'script'))</script>
<script>
 <!--
 if (window.addEventListener) 
    window.addEventListener('load', function() { window.location="<?php echo $golink; ?>"; }, false);
 else
    window.attachEvent('onload', function() { window.location="<?php echo $golink; ?>"; });
 // -->
 </script>
</head>
<body>
</body>
</html>