问题现象
开启Cloudflare的"自动HTTPS重写"或"始终使用HTTPS"后,用户访问 http://example.com/?utm_source=wechat,跳转后UTM参数全部丢失,Google Analytics收不到流量来源。这不是个例,是Cloudflare默认页面规则的已知行为。
Cloudflare为什么会导致参数丢失
1. 页面规则中的转发URL用了硬编码URL
很多教程让你在页面规则里填 https://example.com/$1,但$1只捕获路径,不捕获查询字符串。跳转后 ?utm_source=wechat 直接被丢弃。
2. "始终使用HTTPS"功能的局限
Cloudflare的"总是使用HTTPS"是一个简单的301跳转,它不会保留原始请求的查询参数,尤其当源站本身也有HTTP→HTTPS跳转时,会发生两次跳转,参数在中间某一环丢失。
3. 源站Nginx/Apache也在做跳转
CDN跳转一次,源站又跳转一次。如果源站用的是 return 301 https://$host$request_uri; 但配置有误,参数同样会丢。排查时要分清是哪一层丢的。
4. Cloudflare Workers或Transform Rules介入
如果你用了Cloudflare Workers做跳转逻辑,或者Transform Rules里配置了URL重写,代码里若没有显式保留 request.url 的查询部分,参数会被静默丢弃。
5. 浏览器缓存了错误的301
一旦浏览器缓存了不带参数的301响应,后续所有请求都会跳过参数直接跳。用隐身窗口或curl验证才能看清真实行为。
5个修复方案
方案一:页面规则正确捕获查询参数
在Cloudflare页面规则转发URL时,目标URL填写:
https://example.com/$1$2is_args$args
注意:Cloudflare页面规则的 $1 是路径,? 后面的查询字符串需要单独处理。更可靠的做法是改用Transform Rules(见方案二)。
方案二:用Transform Rules保留查询字符串(最稳妥)
Cloudflare的Transform Rules(转换规则)→ 重写URL
- 进入Cloudflare控制台 → Rules → Transform Rules
- 创建规则:当
starts_with(http.request.uri, "http://") - 重写URL为
https:// + http.request.host + http.request.uri.path + "?" + raw.http.request.query.string
这样查询字符串会被完整保留,不会依赖正则表达式捕获。
方案三:关闭Cloudflare HTTPS跳转,改由源站处理
如果Cloudflare层面跳转不可控,可以直接关闭"始终使用HTTPS",改在源站Nginx配置:
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}
$request_uri 包含路径+查询参数,不会丢。
方案四:用curl验证跳转链,定位丢失层级
用curl查看跳转链:
curl -I -L --max-redirs 5 "http://example.com/?utm_source=test"
如果看到两次301(一次Cloudflare、一次源站),说明配置重叠,需要去掉一层。
方案五:用Workers脚本精准控制跳转
用Cloudflare Workers做跳转,代码里显式保留search参数:
addEventListener("fetch", event => {
let url = new URL(event.request.url)
if (url.protocol === "http:") {
url.protocol = "https:"
return Response.redirect(url.toString(), 301)
}
event.respondWith(fetch(event.request))
})
url.toString() 会自动带上查询参数,比页面规则可靠得多。
快速排查清单
- 用隐身窗口 + curl验证,排除浏览器缓存干扰
- 检查Cloudflare页面规则转发URL是否包含查询字符串占位符
- 检查Transform Rules是否重写了URL且未保留查询参数
- 检查源站是否有独立的HTTP→HTTPS跳转配置
- 用
curl -I -L查看完整跳转链,确认参数在哪一层丢失
相关文章
版权声明
本文仅代表个人观点。
本文系AI辅助作者原创,未经许可,转载请保留原文链接。

发表评论