2

我正在尝试创建一个正则表达式来在某些页面上的谷歌标签管理器中触发一个标签。

我遇到的问题是我不想在与其中的查询字符串匹配的 URL 上触发此标记,因为它只是一个会话标识符,我不需要在具有查询字符串的页面上触发该标记。这些基本上是重复的,不需要在第 3 方跟踪程序中进行跟踪。我知道如何在 GA 中排除它们,但我不知道如何为第三方跟踪做到这一点。

我将详细介绍下面的场景以及我尝试过的内容。

如果我在 GA 中查看,我的 URL 报告中出现的示例页面:

/页

/page/subpage?my-handsome-query-string&some-other-data

/页面/子页面

/页/子页/子子页

/page/?query-string-again

所以我想做的是在没有查询字符串的页面上触发跟踪,这证明了这个问题。

如果我放入^/page.*[^\?]它只是不起作用。我想我完全错误地使用了否定字符类?我无法让它工作,并且需要一些关于如何设计更好的正则表达式的帮助。

我试过的其他一些是:

^/page/.*但这一个只匹配之后的所有内容,/page/但不匹配/page

我对正则表达式不是很好,所以我基本上想做的是匹配/page, /page/subpage, /page/subpage/subpage等,但不是任何包含查询字符串的 URL。

在 GTM 中,我不能创建两个规则"Include {{url path}} matching this" and "Exclude {{url path}} matching \?",所以这一切都需要在一个正则表达式中完成......这完全让我不知所措。

编辑:迈克给出了一个很好的答案来解决我的 GTM 部分,但我仍然有兴趣了解是否可以使用单个正则表达式来完成上述操作?

4

1 回答 1

7

您实际上可以按照您的描述创建两个规则。

在 GTM 中,标签可以同时具有触发规则和阻止规则。阻塞优先。例如。

射击规则:

{{url}} matches ^page/.*

拦截规则:

{{url}} does not contain ?

另一种选择是使用自定义 javascript 宏。它采用 a 的形式function(){ },可以检测查询字符串中的值window.location.search并返回布尔值。然后有一个射击规则{{your custom fn}} equals 1

您还可以创建使用URL宏类型和Query组件类型的宏。该值设置为不带前导的查询字符串?。如果 url 是example.com?foo=bar这个宏将包含foo=bar. 然后只需添加触发规则{{query}} matches Regex ^${{query}} does not contain something-that-will-never-be-in-the-url-to-avoid-regex

于 2013-12-06T15:32:18.457 回答