为什么需要批量检测网站跳转次数
在网站运维和SEO优化中,重定向链路过长会直接影响用户体验和搜索引擎抓取效率。一个URL经过3次以上跳转,不仅拖慢页面加载速度,还会导致UTM参数丢失、权重分散等问题。
手动用curl一个个检查显然不现实,特别是手上有一批域名需要巡检的时候。下面分享3个实战脚本,帮你快速批量检测网站跳转次数。
核心变量:curl -w num_redirects
curl提供了一个专门统计重定向次数的变量num_redirects,配合-w参数使用:
curl -o /dev/null -s -w '%{num_redirects}\n' -L 'https://example.com'
输出就是一个数字,表示整个请求过程中发生了几次重定向。这个数字是整个任务的基础。
实战脚本一:批量检测域名列表跳转次数
把需要检测的域名写在一个文本文件里,每行一个URL,然后用脚本批量跑:
#!/bin/bash
# 文件名: batch_redirect_count.sh
# 用法: bash batch_redirect_count.sh urls.txt
URL_FILE=""
if [ -z "" ]; then
echo "用法: urls.txt"
exit 1
fi
echo "URL|跳转次数|最终状态码"
echo "---|---|---"
while IFS= read -r url || [ -n "" ]; do
# 跳过空行和注释
[[ -z "" || "" =~ ^# ]] && continue
redirects=
final_code=
echo "||"
done <""
输出是表格格式,方便直接粘贴到表格工具里分析。如果某个域名跳转次数超过3次,就需要重点关注了。
实战脚本二:并行检测加速(xargs版)
域名多的时候,串行检测太慢。用xargs并行跑,速度提升明显:
#!/bin/bash
# 并行批量检测跳转次数(5个并发)
URL_FILE=""
CONCURRENCY=5
check_redirects() {
local url=""
local redirects=
local final_url=
echo "||"
}
export -f check_redirects
cat "" | xargs -P "" -I {} bash -c 'check_redirects "{}"'
-P 5表示同时跑5个请求,根据自己的网络情况调整。注意并发太高可能被目标服务器限流。
实战脚本三:输出CSV报告(含跳转链路)
只拿到跳转次数还不够,最好能把每次跳转的中间URL也记录下来。这个脚本会输出更详细的CSV报告:
#!/bin/bash
# 输出CSV:URL,跳转次数,最终URL,最终状态码
URL_FILE=""
echo "原始URL,跳转次数,最终URL,最终状态码"
while IFS= read -r url || [ -n "" ]; do
[[ -z "" || "" =~ ^# ]] && continue
# 获取跳转次数和最终URL
result=
echo ","
done <"" > redirect_report.csv
echo "报告已生成: redirect_report.csv"
生成的CSV可以直接用Excel打开,按跳转次数列排序,一眼看出哪些域名重定向链路过长。
配合url_effective追踪完整跳转链路
num_redirects只告诉你跳了几次,但每次跳到哪里去了?配合url_effective和-v参数可以看到完整链路:
curl -v -L 'https://example.com' 2>&1 | grep -i 'location:\|< HTTP'
这个命令会输出每次跳转的状态码和目标URL,帮你精确定位是哪一层跳转出了问题。
常见问题:num_redirects输出0的原因
有时候明明有跳转,但num_redirects输出0,常见原因:
- 没有加
-L参数:curl默认不跟随重定向,必须加-L才会计数 - 跳转次数超过
--max-redirs默认值(50):虽然默认50次已经很大,但如果有恶意循环跳转,可能被截断 - 用的是302但Location指向自己:形成循环,curl会在达到max-redirs后停止,此时num_redirects显示的是实际跳过的次数
定时巡检:结合cron自动监控
把脚本放到cron里每天自动跑,跳转次数异常时发告警:
# 每天8点检测,结果发邮件
0 8 * * * /path/to/batch_redirect_count.sh /path/to/urls.txt | \
mail -s "网站重定向巡检报告" your@email.com
也可以用PowerShell版在Windows上跑,配合任务计划程序实现同样效果。
相关文章
总结
批量检测网站跳转次数,核心就是curl -w num_redirects这个组合。三个脚本从简单到完整,可以直接用,也可以根据自己的需求改。
重定向链路越长,用户访问速度越慢,SEO权重流失也越多。建议把跳转次数控制在2次以内,超过3次就要排查是否有不必要的多层跳转了。
版权声明
本文仅代表个人观点。
本文系AI辅助作者原创,未经许可,转载请保留原文链接。

发表评论