为什么要同时获取重定向次数和最终地址
在做网站巡检、短链追踪或API调试时,一个URL可能经过多次301/302跳转才到达终点。如果只能看到最终地址,却不知道跳了几次,排查问题时会少关键信息。
比如:短链服务返回302,你想知道最终落地页是哪个URL,同时还要确认跳转次数是不是符合预期(避免重定向循环)。这时候就需要num_redirects和url_effective两个变量配合使用。
核心变量说明
curl 的 -w/--write-out 参数提供以下两个与重定向相关的变量:
- num_redirects:重定向次数,整数,0表示没有重定向
- url_effective:最终有效的URL,即经过所有重定向后的终点地址
注意:必须加 -L 参数,curl 才会跟随重定向,否则这两个变量不会有实际意义。
实战技巧一:基本用法和格式化输出
最简单的用法,一次性输出重定向次数和最终URL:
curl -L -w '次数: %{num_redirects}\n最终地址: %{url_effective}\n' -o /dev/null -s https://example.com
参数说明:
-L:跟随重定向-w:指定输出格式-o /dev/null:丢弃响应体,只关心跳转信息-s:静默模式,不显示进度条
如果要把结果导入脚本处理,推荐用逗号分隔格式:
curl -L -w '%{num_redirects},%{url_effective}\n' -o /dev/null -s https://example.com
输出示例:2,https://www.example.com/
实战技巧二:批量检测多个URL
实际运维中经常需要批量检测一组URL。结合 while 循环可以这么写:
while read url; do
result=
echo " -> "
done < urls.txt
输出CSV格式,方便导入Excel分析:
echo "原始URL,最终URL,重定向次数" > result.csv
while read url; do
final=
redirects=
echo ",," >> result.csv
done < urls.txt
实战技巧三:输出JSON格式便于程序解析
如果需要将结果接入监控系统,输出JSON格式会更方便。使用 -w @模板文件 的方式:
先创建模板文件 curl_format.txt:
{
"url": "%{url_effective}",
"redirects": %{num_redirects},
"http_code": %{http_code}
}
然后执行:
curl -L -w @curl_format.txt -o /dev/null -s https://example.com
输出:
{
"url": "https://www.example.com/",
"redirects": 2,
"http_code": 200
}
常见应用场景
场景一:检测短链的最终落地页
短链服务(bit.ly、t.co等)通常返回302。用一条命令就能拿到最终地址:
curl -L -w '%{url_effective}' -o /dev/null -s https://bit.ly/xxxx
场景二:排查重定向循环
如果 num_redirects 异常大(接近默认上限50),说明可能存在重定向循环。用 --max-redirs 限制跳转次数来定位问题:
curl -L --max-redirs 5 -w '%{num_redirects}\n' -o /dev/null -s https://example.com
场景三:验证网站迁移后的跳转
HTTP迁移到HTTPS或域名变更时,批量验证旧URL是否正确跳转到新地址:
for url in http://old-domain.com/page1 http://old-domain.com/page2; do
final=
echo " -> "
done
注意事项
- 必须加
-L参数,否则 num_redirects 始终为0 - PowerShell 中 curl 是 Invoke-WebRequest 的别名,需用
curl.exe调用真正的 curl - 结合
-I参数可只发送HEAD请求,减少流量 - 用
-v参数可查看完整的跳转链路,配合 num_redirects 定位哪一跳有问题
相关文章
- curl -w输出多个变量格式化技巧:5种写法让重定向诊断数据一目了然
- curl同时输出url_effective和num_redirects:5个实战技巧让重定向链路一目了然
- curl -w配合jq解析JSON输出:把HTTP性能数据转成结构化JSON的完整实战
总结
通过 curl 的 -w 参数,同时获取 num_redirects 和 url_effective,可以快速诊断URL的重定向行为。本文介绍的3个实战技巧——基本格式化输出、批量检测脚本、JSON格式输出——基本覆盖了日常运维的主要场景。建议结合实际需求选择合适的输出格式。
版权声明
本文仅代表个人观点。
本文系AI辅助作者原创,未经许可,转载请保留原文链接。

发表评论