重定向上的HTTP Referrer

时间:2011-12-29 14:00:13

标签: php redirect google-analytics

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

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

但谷歌分析不会显示引荐来源网站(脚本工作的位置),而是显示点击横幅的网址。显然,我无法跟踪横幅出现和不想要的所有网站。我希望refferer成为脚本工作的站点。我如何使用 $ _ SERVER ['HTTP_REFERER']; 才能执行此操作?

2 个答案:

答案 0 :(得分:3)

GA有一种方法可以让您使用指定值override the default referring URL(document.referrer)。

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

我不知道你是如何构建你的$ golink变量的,但基本上你会添加以下内容:

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

如果已经存在网址参数,请使用&代替?,并且上面的代码假设使用ref作为网址参数,因此请使用您想要的任何变量。

然后在目标网页上,在_trackPageview来电之前,您需要添加

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

ref将是一个javascript变量,其值为ref = xxx查询字符串参数。出于某种奇怪的原因,Javascript没有本地方式来获取URL参数值,GA也没有提供(暴露的)解决方案。如果您已经在页面上有一个解决方案来获取URL参数(例如来自框架或您已经创建的函数的东西),那么就使用它。否则,很容易找到一个能为你做的javascript函数。

这样做有几个好处:

  1. 您无需担心访问者会看到插页式页面。
  2. 您不必担心GA在重定向之前没有机会完全加载
  3. 您可以看到引荐来源直接与您的目标网页相关联,因为通过插页式页面,您始终会将插页式广告页面视为推荐人,并且必须查看引用页面时间页面的网址报告。

答案 1 :(得分:1)

是的,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>

注意元标记中的$golink变量。

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

致谢:优化的GA代码转到Mathias Bynens

[编辑:仅限javascript版本]

<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>