做站久了,重定向几乎不可避免:换域名、改目录、合并栏目、下线活动页,都会用到 301 或 302。单次跳转本身没问题,麻烦的是跳转一层套一层,或者规则用错了地方。这类问题用户感知不强,但会实打实地消耗蜘蛛的抓取配额,也让权重在传递过程中被稀释。
跳转链是怎么变长的
最常见的情况是历史遗留。比如 A 页 301 到 B 页,后来 B 页又被合并到 C 页,但 A 的规则没人改,于是访问 A 就变成 A→B→C 两次跳转。改版次数越多,链条越长,有些站点甚至要五六跳才落到最终页面。
几个容易被忽略的问题
用 302 代替 301
临时跳转和永久跳转的语义不同。如果确定某个地址以后不再使用,就应该用 301;长期挂着 302,蜘蛛会一直把原地址当作有效地址反复回访,新地址的收录节奏也会被拖慢。
跳转到首页或无关页面
页面下线后,为了省事直接跳到首页,是很常见的做法。用户点进来发现内容和预期完全不符,跳出率会很高;蜘蛛也会认为这个地址的指向不稳定。更好的做法是跳到最相关的新页面,实在没有对应内容,就正常返回 404 或 410。
跳转和 canonical 打架
有的页面一边写着 canonical 指向 B,一边又用 301 跳到 C。两种信号互相矛盾,蜘蛛只能自己猜。规范做法是只保留一种明确指向,其余重复地址统一跳过去。
跳转链里混入参数或大小写变体
例如带 www 和不带 www 混用,http 和 https 混用,末尾斜杠忽有忽无。每一种变体都可能自成一条链。先把站点的主域形式定下来,再让其他形式一次性跳过去,别再层层转。
自查可以按这几步走
- 从服务器日志或爬虫工具里,找出返回 301、302 的 URL 清单,重点关注访问量高、被链接多的页面。
- 对每个跳转地址手动或批量跟一次,记录跳转次数和最终落地页。
- 跳转超过一跳的,把中间环节改成直接指向终点。
- 检查跳转目标是否与页面主题相关,是否与 canonical 冲突。
- 确认协议、域名、路径大小写、末尾斜杠是否统一。
- 改完之后再跑一遍,观察日志里是否还出现老的跳转记录。
维护上的两个小习惯
一是把重定向规则集中管理,别散落在配置文件、CDN、应用代码好几处,改的时候容易漏。二是给规则加注释,写清楚谁在什么时候因为什么加的,半年后回头看还能看懂。
跳转不是越多越好,也不是越快越好。目标很简单:让用户和蜘蛛都用最少的步数,到达那个真正有内容的地址。
这类检查不需要多高深的技术,隔一段时间花半小时跑一遍,就能避免很多“页面明明存在却一直没被收录”的疑惑。至少,别让一次本该一步到位的跳转,拖成谁也说不清终点的连环跳。