如何在使用PHP重定向页面时使用Google Analytics进行跟踪?

24

我有一个网站,希望能够使用GA跟踪谁点击了特定链接。

假设我有这个页面:/index.php?id=32

在这个页面上,我根据ID变量(在本例中为32)运行一些查询,并从数据库获取32 id项的URL以重定向访问者。

我正在使用PHP函数:header('Location: http://www.example.com');。 在将用户重定向之前,我希望Google捕获访问者的信息,然后再重定向到所需的网页。

我尝试将GA代码粘贴并在重定向之前echo它,但它没有起作用。 如何使用GA跟踪这些页面?


1
所以你想让用户在一个空白屏幕上卡一秒钟并感到烦恼吗?因为如果你能这样做,那就是最终结果。Google Analytics通过客户端的Javascript操作,因此在重定向之前必须在客户端暂停,以便它能够捕获数据。 - developerwjk
5个回答

18

一般而言

如果您的页面使用了重定向,那么重定向的页面将成为着陆页的引用页。例如,如果您更改了您的网站,使index.html现在重定向到home.html,则index.html将成为home.html的引用页。如果有人通过Google搜索先访问了index.html,然后再到达您的网站,您将没有任何关于Google搜索的数据。

因此,您应该在重定向页面以及着陆页面上放置Google Analytics跟踪代码。这样,重定向页面将捕获实际的引用信息,用于您的报告。

请注意,某些浏览器可能会在JavaScript调用之前进行重定向。

(参见:https://support.google.com/analytics/answer/1009614?hl=en)

您的具体情况

由于PHP是在任何JavaScript之前呈现和执行的,因此Google Analytics跟踪器无法发送数据到其服务器。


解决方案

考虑到您无法跟踪PHP重定向页面,有许多可能的替代方案:




  • 广告系列跟踪(在此特定情况下我不会个人使用此方法。
    • /products.php?utm_source=index&utm_medium=redirection-page&utm_campaign=32

在进入PHP重定向页面之前,列表中的最后两个项目是在初始页面上的各个链接上实现的。


10

我建议使用以下方法。它使用hitCallback来进行重定向,这样事件将被发送到GA,然后重定向将发生。它还设置了一个超时,以便在任何情况下analytics.js不可用时(无论什么原因),查看器仍将最终发送到正确的位置。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
    <head>
        <title>example</title>
        <script>
            setTimeout(redirect, 2000);
            var redirected = false;
            function redirect() {
                if (!redirected) {
                    redirected = true;
                    location.href = 'http://your.website.here.com';
                }
            }
            (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
                (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
                m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
            })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
            ga('create', 'UA-NNNNNNN-N', 'auto');
            ga('send', 'event', 'Event Name', 'redirect', {
                hitCallback: redirect
            });
        </script>
    </head>
    <body>
    </body>
</html>

当然,跟踪代码和 URL 应该更新以匹配您自己的。

参考资料:


顺便提一下,我明白我的解决方案并没有真正使用 PHP。我让读者自己在示例中添加适当的 <?php ... ?>。特别是对于 location.href 和可能还有 UA-NNNNNNN-N - sfosdal

2
如果您查看错误日志,您会看到一个大致说“无法发送重定向头,头已经被发送”的错误。如果在您的 PHP 代码片段之前已经有了 HTML/Javascript 输出,那么就不可能通过位置头进行重定向(因为在那时您已经隐式地发送了 http 头)。
可以使用 Google 的 measurement protocol 创建一个服务器端解决方案来跟踪重定向前的页面。在这种情况下,您需要自己创建一个客户端 ID,并在重定向 URL 中附加它以进行跨域跟踪(如果您重定向的属性是您自己的)。
如果这不是问题,您可以使用 Curl 或 fopen 发送一个调用到 GA,URL 如下:

https://www.google-analytics.com/collect?v=1&tid=UA-XXXX-Y&cid=XXXXXXXXt=pageview&dp=%2redirect

“UA-XXXX-Y”是谷歌账户的ID,“cid”是您生成的客户端ID,“/redirect”是您页面的名称。如果您想识别重复的用户,您需要将客户端ID保存到cookie中,并在每次访问时检查cookie是否存在,并在存在时检索ID。”

0

既然发送访问者到重定向页面的页面也在您的控制之下,我建议采用完全不同的方法:在源页面上使用事件跟踪。

在具有/index.php?id=32链接的页面上,通过将onClick处理程序附加到链接并执行类似以下内容的操作来测量对此链接的所有点击:

ga('send', 'event', {
  eventCategory: 'Redirect Link',
  eventAction: 'click',
  eventLabel: event.target.href
});

0

如果您禁用重定向并检查页面,是否在网络选项卡中看到GA的调用?我发现有时候推送事件在GA中不会显示出来,需要等待大约24小时。

如果您确实看到它正在发送到Google,那么我建议您保持启用状态,并等待一天后再检查GA以查看是否已记录任何内容。


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