2026.06.01 | youres | 33次围观
用curl追踪重定向链路、检查UTM参数是否保留,是排查流量追踪失效的必备技能。本文用5个步骤教你快速定位问题。
为什么需要追踪重定向链路
营销链接从点击到落地页,往往经过多次跳转:广告平台→短链服务→CDN→HTTP转HTTPS→最终页面。任何一环丢失UTM参数,Google Analytics就无法正确归因流量来源。
常见场景:
- 短链服务剥离了查询参数
- HTTP强制跳转HTTPS时参数丢失
- CDN层重定向未保留查询字符串
- 服务器配置错误导致参数被清空
第一步:用curl查看完整重定向链路
curl的-L参数会自动跟随重定向,配合-v参数可以看到每次跳转的详细信息:
curl -L -v "https://example.com/link?utm_source=google&utm_medium=cpc"
输出中关注这些关键信息:
< HTTP/1.1 301或302——跳转状态码< Location:——跳转目标URL- 目标URL中是否还包含
utm_source等参数
第二步:只查看响应头不下载内容
用-I参数只获取响应头,适合快速检查第一跳:
curl -I "https://example.com/link?utm_source=google&utm_medium=cpc"
注意:-I发送的是HEAD请求,某些服务器对HEAD和GET的响应可能不同。如果怀疑有差异,用-i代替:
curl -i "https://example.com/link?utm_source=google&utm_medium=cpc"
第三步:用-w参数输出重定向详情
curl的-w参数可以格式化输出,提取重定向次数和最终URL:
curl -L -s -o /dev/null -w "重定向次数: %{num_redirects}\n最终URL: %{url_effective}\n" "https://example.com/link?utm_source=google"
输出示例:
重定向次数: 3
最终URL: https://www.example.com/page
如果最终URL中没有UTM参数,说明某次跳转把参数弄丢了。
第四步:逐跳追踪找出参数丢失位置
用--max-redirs 0禁止跟随重定向,手动逐跳检查:
# 检查第一跳
curl -I --max-redirs 0 "https://short.link/abc?utm_source=google"
# 查看Location头的值
# 如果Location包含参数,继续检查下一跳
curl -I --max-redirs 0 "https://cdn.example.com/redirect?utm_source=google"
逐跳追踪直到发现哪一跳的Location头丢失了UTM参数。
第五步:用脚本自动化检查
写个简单脚本批量检查多个链接:
#!/bin/bash
urls=(
"https://link1.com?utm_source=google"
"https://link2.com?utm_source=facebook"
)
for url in "${urls[@]}"; do
echo "=== 检查: $url ==="
final=$(curl -L -s -o /dev/null -w "%{url_effective}" "$url")
if [[ $final == *"utm_"* ]]; then
echo "✓ UTM参数保留: $final"
else
echo "✗ UTM参数丢失: $final"
fi
done
常见问题排查
短链服务剥离参数
某些短链服务默认不传递查询参数。解决方案:更换短链服务,或联系服务商开启参数传递。
HTTP跳HTTPS参数丢失
Nginx配置return 301 https://$host$uri会丢失参数,应改为return 301 https://$host$request_uri。
CDN层重定向问题
Cloudflare等CDN的"Always Use HTTPS"功能可能剥离参数。检查CDN的重定向规则配置。
总结
用curl追踪重定向链路的5个步骤:
-L -v查看完整跳转过程-I或-i只看响应头-w输出重定向统计- 逐跳追踪定位问题环节
- 用脚本批量检查
掌握这套方法,流量追踪失效问题一查一个准。
相关文章
版权声明
本文仅代表个人观点。
本文系AI辅助作者原创,未经许可,转载请保留原文链接。

发表评论