做营销的同学最怕什么?花了大力气投放广告,结果UTM参数全丢了,流量来源全部显示为直接访问,轻松跟踪的转化路径一夜清零。问题出在哪?大多数情况下是服务器重定向把UTM参数给吞了。今天这篇文章,手把手教你在命令行里用curl把这个问题查个底期天。
一、先搞懂两个核心概念
url_effective是curl -w参数里的一个输出变量,字面意思就是"最终生效的URL"。当你用-L让curl跟随重定向时,url_effective会告诉你最后一次跳转之后的完整URL是什么。这个变量在诊断短链、跟踪营销链接时特别有用。
UTM参数丢失的原因主要有几种:短链平台中间截断、Nginx或CDN层rewrite把问号参数清空、服务器做了协议跳转(HTTP跳HTTPS)但没保留查询参数。最常见的情况是访问链中间有跳转,且跳转规则写得不严谨,参数这么就凳空消失了。
二、单条URL检测:最基础的命令
curl -L -w "\n最终URL: %{url_effective}\n" "https://short.url/?utm_source=test"执行之后你会看到curl输出的最终URL。如果UTM参数完整保留,输出里应该还能看到utm_source=test这些字段。如果参数没了,终端里就是干干净净的域名后面没什么跟。
curl -L -s -w "最终URL: %{url_effective}\n" -o /dev/null "https://short.url/?utm_source=baidu"-s静默输出只显示url_effective,-o /dev/null丢弃页面内容只留响应头信息,干净利落。
三、批量检测:脚本化巡检才是正经用法
#!/bin/bash
URLS=(
"https://t.cn/abc123?utm_source=baidu"
"https://dwz.cn/xyz789?utm_source=weixin"
)
for url in "\${URLS[@]}"; do
result=$(curl -L -s -w "%{url_effective}" -o /dev/null "$url")
echo "原始: $url"
echo "终点: $result"
echo "---"
done这个脚本遍历URL列表,挡挡打印出原始URL和最终URL,对比两边UTM参数有没有缩水。
#!/bin/bash
check_utm() {
local original="$1"
local final=$(curl -L -s -w "%{url_effective}" -o /dev/null "$original")
if echo "$final" | grep -q "utm_"; then
echo "参数完整保留: $original -> $final"
else
echo "UTM参数丢失: $original -> $final"
fi
}
while IFS= read -r url; do
[ -n "$url" ] && check_utm "$url"
done < urls.txt这个版本更进一步,脚本会自动判断参数丢没丢,在CI/CD流水线或者定时巡检里用非常适合。
#!/bin/bash
echo "原始URL,最终URL,状态" > utm_report.csv
while IFS= read -r url; do
[ -z "$url" ] && continue
final=$(curl -L -s -w "%{url_effective}" -o /dev/null "$url")
if echo "$final" | grep -q "utm_"; then
status="OK"
else
status="参数丢失"
fi
echo "XXXurlXXX,XXXfinalXXX,XXXstatusXXX" >> utm_report.csv
done < urls.txt
echo "报告已生成: utm_report.csv"导出的CSV用Excel打开,交给运营和市场同学一目了然,比截图发给群里的体验好太多。
四、配合num_redirects看完整链路
curl -L -s -w "跳转次数: %{num_redirects}\n最终URL: %{url_effective}\n" -o /dev/null "https://short.url/?utm_source=test"跳转次数多的时候,尤其要注意中间几跳Location头里有没有参数。可以用-v看详细过程:
curl -L -v "https://short.url/?utm_source=test" 2>&1 | grep -i location每一次跳转的Location字段都会在这里露出来,参数在哪一跳消失的,一眼就能定位。
五、写在最后
UTM参数丢失这个问题,说大不大,说小不小——没检测到的时候觉得一切正常,等发现流量归因全是direct才后悔。养成定期用curl巡检营销链接的习惯,能省掉很多事后排查的麻烦。
命令行检测的好处是过程透明、执行快速,能集成到任何自动化流程里。花几分钟写好脚本,设个定时任务,营销链接的参数健康度就能持续监控起来了。
相关阅读:
版权声明
本文仅代表个人观点。
本文系AI辅助作者原创,未经许可,转载请保留原文链接。

发表评论