改版、换域名、加 www、从 HTTP 迁到 HTTPS,这几件事单独做都不难,难的是它们叠在一起。不少站点在迁移完成后,访问一个旧地址要经过三到四次跳转才落到真正的页面上,而站长自己因为浏览器地址栏最终显示正确,往往察觉不到。
跳转链是怎么攒出来的
典型的链条长这样:用户或蜘蛛请求 http://example.com/old-page,服务器先 301 到 HTTPS 版本,再 301 到带 www 的域名,接着 301 到新的栏目路径,最后可能还因为尾斜杠再补一跳。每一跳都是独立的 HTTP 往返,浏览器要串行等待,蜘蛛也要为同一个目标地址多花几次请求。
链条不是一次形成的,而是一层层叠上去的:先上了 HTTPS,规则写成“所有 HTTP 跳 HTTPS”;第二年换了域名,又加一条“所有旧域名跳新域名”;后来栏目改版,页面级重定向再叠一遍。每条规则单看都对,串起来就变长了。
跳转链的实际代价
- 抓取预算被摊薄:一次请求能拿到的内容,现在要用三四次请求才能确认终点。
- 首字节时间变长:移动网络下,多跳带来的延迟是能被用户感知的。
- 信号传递衰减:跳转层级越多,链路上出现中断、写错目标地址的概率越大。
- 参数容易丢:带 UTM 或筛选参数的地址在多跳之后,参数常常被规则吃掉。
- 排查变难:日志里同一目标出现多个来源地址,统计口径容易混乱。
自查的具体做法
- 从日志或站点地图里抽样,挑出访问量靠前、外链较多、以及近期改过路径的地址,各取二三十条。
- 用 curl -I -L 或带重定向追踪的工具逐条请求,观察每一跳的 Location 头,把跳转次数记下来。
- 重点看四类地址:HTTP 入口、旧域名入口、带 www 与不带 www 的入口、以及结尾带不带斜杠的入口。
- 检查终点:跳转后的页面是不是 200,是不是原路径对应的内容,有没有被统一甩到首页。
- 把超过一跳的地址整理成清单,标注来源是外链、站内链接、站点地图还是历史文章配图。
常见的几种坏形态
- http → https → www 三段式,其实可以合并成一次跳转。
- 旧域名 → 新域名 → 新路径 → 去掉尾斜杠,四跳才到。
- 跳转目标本身是 404 或 410,等于把用户送进死胡同。
- 大量不同旧地址全部跳到首页,容易被视作软 404。
- 跳转规则里带了域名大小写或端口差异,造成同一目标反复横跳。
修正时把握几条原则
第一,入口归一:HTTP、无 www、带端口这些变体,在服务器或 CDN 层一次性转到唯一的规范地址。第二,路径保真:改版产生的页面级跳转,尽量保留原有目录结构和参数。第三,按重要性排序:先修有外链、有流量、有排名的地址,长尾可以分批处理。第四,修完记得回头改站内:内链、站点地图、RSS、历史文章中写死的旧地址,都要一并替换,否则链条还会被重新造出来。
跳转链不是一次性的迁移问题,而是每次动域名、动协议、动目录结构时都可能新增的遗留项。把它当成改版流程里的固定收尾动作,比事后翻日志找问题省事得多。
建议的巡检节奏
改版或迁移后的前两周,每周抽一次样本;稳定之后,按季度用同样的方法复查一轮,同时留意日志里出现频率较高的 301 来源地址。把每次的抽检结果和修正记录留存下来,下一次动结构时就有对照。