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

Posted

技术标签:

【中文标题】如何使用 PHP 在重定向页面上使用 Google Analytics 进行跟踪?【英文标题】:How to track with Google Analytics on a redirection page with PHP? 【发布时间】:2015-02-11 18:22:21 【问题描述】:

我有一个网站,我想跟踪谁点击了 GA 的特定链接。

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

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

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

我曾尝试在重定向之前粘贴 GA 代码并 ECHO 它,但它不起作用。如何使用 GA 跟踪此类页面?

【问题讨论】:

所以您希望用户在空白屏幕上停留一秒钟并感到恼火?因为如果你能做到,那就是结果。 Google Analytics 在客户端上通过 javascript 运行,因此您必须先在客户端上暂停,然后再重定向它才能捕捉到点击。 【参考方案1】:

如果您禁用重定向并检查页面,您是否在网络选项卡中看到对 GA 的调用?我发现有时推送事件在 24 小时内都不会出现在 GA 中。

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

【讨论】:

【参考方案2】:

如果您查看错误日志,您会看到一条错误消息,粗略地说“无法发送重定向标头,标头已发送”。如果您在 PHP sn-p 之前已经有 html/Javascript 输出,则无法通过位置标头进行重定向(因为此时您已经隐式发送了 http 标头)。

可以使用 Google 的 measurement protocol 创建一个在重定向之前跟踪页面的服务器端解决方案。在这种情况下,您需要自己创建一个 client_id,如果您重定向的属性是您自己的,请将其附加到重定向 url 以进行跨域跟踪。

如果不担心,您可以使用 Curl 或 fopen 通过这样的 Url 向 GA 发送呼叫:

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

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

【讨论】:

【参考方案3】:

一般来说

如果您的页面使用重定向,则重定向页面将变为 着陆页的引荐来源网址。例如,如果您更改了您的网站, 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 重定向页面,有许多可能的替代方案:

Javascript 重定向:https://***.com/a/4745622/1672895 window.location = "http://www.yoururl.com";
元刷新:https://***.com/a/8692559/1672895 <meta http-equiv="refresh" content="5; url=http://example.com/">
虚拟页面跟踪:https://developers.google.com/analytics/devguides/collection/analyticsjs/pages ga('send', 'pageview', '/index.php?id=32');
广告系列跟踪(在这种特定情况下,我个人不会使用此方法。/products.php?utm_source=index&utm_medium=redirection-page&utm_campaign=32

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

【讨论】:

【参考方案4】:

我建议如下。它使用 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>

跟踪代码和网址当然应该更新以匹配您的。

参考资料:

Handling Timeouts Hit Callback

【讨论】:

顺便说一句,我知道我的解决方案并不是真正使用 PHP。我留给读者在示例中添加适当的&lt;?php ... ?&gt;。专门针对location.hrefUA-NNNNNNN-N【参考方案5】:

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

在包含/index.php?id=32 链接的页面上,通过将onClick 处理程序附加到链接并执行类似的操作来测量此链接的所有点击次数

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

【讨论】:

以上是关于如何使用 PHP 在重定向页面上使用 Google Analytics 进行跟踪?的主要内容,如果未能解决你的问题,请参考以下文章

在没有RedirectAttributes的环境中如何在重定向环境中报错错误提示信息供页面使用

谷歌开发者工具“网络”标签在重定向后清除

重定向到页面并发送自定义 HTTP 标头

使用 JavaScript/jQuery 在重定向上发送 POST 数据? [复制]

Next.js:在实现私有路由时,如何在重定向之前防止未经授权的路由/页面的闪烁?

Next.js:在重定向到 Keycloak 登录页面之前阻止显示索引页面