站点做一次改版、换一次域名,或者把 HTTP 切到 HTTPS,旧地址往往不会一次性换成新地址,而是靠一条条重定向规则接力转发。规则是分批加上去的,时间一长就容易出现 A 跳 B、B 跳 C、C 再跳 D 的情况。对访客来说只是多等了一点,对搜索引擎来说,每一跳都要重新解析一次,链路越长,最终地址被确认得越晚,中间任何一环出错,整条路径就断了。
重定向链通常是这样长出来的
- 域名或协议变更:老域名 301 到新域名,新域名下面又有一条 HTTP 跳 HTTPS 的规则,两段叠在一起就是两跳。
- www 与非 www 各留一条规则:两条规则互相指向,形成循环,或者绕一圈才回到起点。
- 目录结构调整:文章从 /a/123.html 搬到 /news/123.html,旧规则只改了一半,剩下的还指向更早的地址。
- 尾斜杠与大小写:先统一小写,再统一加斜杠,本来是一件事却分成两跳。
- CDN、负载均衡、反向代理各写一条:每一层都以为自己只加了一跳,加起来就是四五跳。
- 用脚本跳转兜底:JS 跳转和 meta refresh 混着用,蜘蛛拿到的往往不是最终页面。
怎么把链路看清楚
- 用命令行看:curl 加上跟随跳转的参数,打印状态码、跳转次数和最终地址,一条命令就能看到整条链。
- 用浏览器看:打开开发者工具的 Network 面板,勾选保留日志,输入旧地址,逐个查看 3xx 请求返回的 Location 响应头。
- 抽查入口:首页、导航、Sitemap、外链常用的地址各挑几个,看它们是不是直接落到终点。
- 看日志:统计一段时间内 3xx 状态码的访问量和来源,跳转次数异常高的路径优先处理。
判断标准
- 正常情况一到两跳就结束,超过三跳就值得整理。
- Location 里尽量写绝对地址,避免相对地址在不同层级被解析成意外目标。
- 长期有效的跳转用 301,临时活动页用 302,不要把 302 当永久规则一直挂着。
- 链路终点应返回 200,不能落在 404、软 404 或者又一个跳转上。
- 检查是否存在循环,A 到 B 再回到 A,访客最后看到的就是报错页。
整理顺序
先处理高频入口,再处理长尾。把重复的规则合并,同一个目标只保留最上游的一条;把站内链接、导航和 Sitemap 全部改成最终地址,减少不必要的跳转。老地址仍然要可用,只是让跳转更短,不要图省事直接把规则删掉。
- 列出跳转次数最多的路径,逐条确认它本该落到哪里。
- 合并同向规则,删掉中间环节和被绕过的旧规则。
- 回归测试:旧地址、带斜杠和不带斜杠、大小写变体各跑一遍。
日常维护习惯
- 上线前把旧地址列表批量跑一遍检查,别等蜘蛛来发现。
- 改动重定向时留一笔记录:时间、原因、影响范围。
- 每季度复查一次,尤其是换域名、切 CDN、调整栏目结构之后。
整理重定向的目标是让地址关系清楚、链路尽量短,方便访客和蜘蛛到达同一处。具体的抓取与收录仍由搜索引擎决定,不必指望靠这一步拿到结果。