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

如何在Varnish中剥离UTM类标签且保留所需查询参数?

Varnish 精准移除UTM类参数并保留其他查询参数

你的现有规则问题在于用\?.*直接删除了整个查询字符串,导致所有参数都被清空。要实现只移除utm、gclid、fbclid、mc相关参数,同时保留其他参数,可以用以下VCL规则:

if (req.url ~ "(utm|gclid|fbclid|mc)(_|=)") {
    # 移除位于查询串开头的目标参数(如 ?utm_source=xxx)
    set req.url = regsub(req.url, "\?(utm|gclid|fbclid|mc)[^&]*&?", "?");
    # 全局移除位于查询串中间/结尾的目标参数(如 &gclid=xxx 或 &mc_id=123)
    set req.url = regsuball(req.url, "&(utm|gclid|fbclid|mc)[^&]*", "");
    # 清理可能残留的末尾问号(当所有参数都被移除时)
    set req.url = regsub(req.url, "\?$", "");
}

规则说明:

  • 第一步regsub:匹配以?开头的目标参数,处理后会保留后续的合法参数。比如?utm_campaign=test&app=346会被替换为?app=346;如果只有目标参数,会变成?留待后续清理。
  • 第二步regsuball:全局匹配所有以&开头的目标参数,无论在查询串的哪个位置,都会被直接移除。比如app=346&fbclid=abc123&page=2会变成app=346&page=2。
  • 第三步regsub:当所有查询参数都被移除后,会清理掉末尾多余的?,避免出现page.html?这种无效URL。

这样就能确保只有指定的UTM类参数被移除,其他需要保留的参数会完整传递给后端,同时避免因唯一UTM标签生成重复缓存条目。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 05:52:53