You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GA4页面流量聚合问题排查及自定义标题解决方法

GA4 流量全部聚合到同一页面的解决方案(EJS模板场景)

我在自己的网站应用里配置GA4后,发现控制台里所有流量都被统计到同一个页面下。排查后找到了问题根源:项目的boilerplate.ejs模板的<head>标签里写死了固定的<title>,而所有页面都通过这个模板渲染,GA4依赖页面标题来区分不同页面的访问行为,所以所有浏览都被判定为同一页面的访问。

原代码情况

Boilerplate.ejs 模板代码

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Welcome to my app!</title>
</head>

<body>
        <script>
            window.dataLayer = window.dataLayer || [];
            function gtag() { dataLayer.push(arguments); }
            gtag('js', new Date());

            gtag('config', 'G-XXXXXXXXX');
        </script>
</body>

子页面顶部代码

所有页面都通过以下方式引用模板:

<% layout('layouts/boilerplate')%>

我之前还考虑过能不能让GA4直接通过页面的<h1>/<h2>这类标题标签来识别不同页面,不过最终我采用了以下方法解决问题:

解决方法

步骤1:将<title>移到每个页面的标题元素内

把模板里的固定<title>删掉,在每个页面的标题(比如<h1>)里添加专属的<title>标签,示例如下:

<div class="row">
    <h1 class="text-center"><title>Pricing</title></h1>
</div>

步骤2:在模板中添加动态设置标题的脚本

在boilerplate.ejs的<body>里加入以下脚本,页面加载时动态提取并设置浏览器标题:

<script> 
    window.onload = setPageTitle;
    function setPageTitle() {
        const newPageTitle = document.querySelector('title').textContent;
        document.title = newPageTitle;
    }
</script>

注:原尝试的document.onLoad写法有误,应该用window.onload,并且必须将获取到的标题赋值给document.title,才能真正让GA4识别到不同页面,同时更新浏览器标签页的显示文本。

这样修改后,每个页面会拥有独立的标题,GA4就能正确区分不同页面的流量数据了。

内容的提问来源于stack exchange,提问作者econobro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 07:45:51