站点改版之后,最常见的情况是:新页面陆续上线,旧地址开始返回 404,而搜索蜘蛛还在一批一批地访问老链接。抓取请求落在空页面上,既消耗了抓取配额,也让原本已经建立起来的入口断掉。很多人把注意力放在新版页面的设计上,却把旧 URL 的处理留到了最后,结果就是迁移期的抓取数据出现一段明显的空档。
先整理一份完整的旧 URL 清单
映射表的前提是清单。改版前如果没有把现有 URL 导出,后面就只能靠日志反推,容易遗漏。可以按下面的顺序收集:
- 从站点地图文件里导出全部 URL,包括分片文件中的条目。
- 从服务器访问日志中筛出近 90 天被访问过的路径,尤其是被搜索蜘蛛访问过的部分。
- 在后台或数据库里导出文章、栏目、标签页、作者页等动态生成的地址。
- 把已经被外部引用的页面单独标注,这些链接一旦失效,影响会更明显。
把几份来源合并去重,得到一个带路径和参数的列表。参数部分要判断哪些是真正影响内容的,哪些只是统计用,后者在迁移时可以直接丢掉。
建立新旧 URL 映射表
映射表可以就是一个两列的表格,左边旧地址,右边新地址。看起来简单,难点在于逐一确认对应关系,而不是批量做字符串替换。
三类常见对应关系
- 一对一:旧文章迁移到新文章,内容基本一致,直接指向新的固定链接。
- 多对一:多个旧标签页或归档页合并到新的栏目页,保留一个最相关的目标地址。
- 无对应:内容已经删除或不再提供。这类页面不要全部指向首页,指向最接近的上级栏目或返回 410,都比强行导向首页更清楚。
映射表建立过程中,最容易被忽略的是带参数的旧地址。比如列表页的分页参数、排序参数,如果旧版和新版的参数名不同,就需要在服务器或中间层补规则,否则蜘蛛会拿到一个 404。
301 的正确用法
确认映射关系之后,跳转规则建议由服务器层统一处理,而不是靠页面里的脚本或 meta 标签。后者对搜索蜘蛛来说并不是同一种信号,处理速度和可靠性都差一些。
跳转目标应当是最终可访问的地址,避免 A 跳 B、B 再跳 C 的链式结构。链路越长,蜘蛛越容易在中途停下。
- 永久迁移用 301,临时维护或短期切换用 302,不要长期用 302 承载改版。
- 跳转目标的协议和域名保持一致,避免又产生一次跨协议跳转。
- 规则测试时用不带 Cookie 的状态访问,排除个性化跳转的干扰。
- 对旧版遗留的混合大小写、末尾斜杠等写法,一并纳入规则范围。
规则上线后,最好抽几十条旧地址逐条访问一遍,看最终落地页是否与映射表一致。批量生成的正则很容易在一两个特殊字符上出错。
站内链接与站点地图同步更新
跳转解决的是外部到达的问题,站内如果还留着旧链接,蜘蛛每爬一次就等于多绕一次。改版时通常要检查这几处:导航与面包屑、文章正文里的历史内链、侧边栏的推荐位、以及站点地图文件本身。
站点地图建议在迁移完成后重新生成一次,把旧地址从文件里去掉,避免出现“站点地图里是旧地址、实际已经跳转”的矛盾情况。同时对已经失效的页面,给出明确的 404 或 410 状态,不要返回一个空白的 200 页面。
迁移后的观察与收尾
改版不是上线那一刻结束,而是之后几周持续观察的过程。可以从服务器日志里筛出搜索蜘蛛的访问记录,重点看三件事:旧地址是否仍被大量请求、跳转后是否成功到达新地址、新地址是否被正常抓取。如果旧地址请求量一直不下降,通常说明某个入口没有被替换,需要回到站内链接或外部引用上去找。
另外准备一个 404 监控清单,把近期新增的失效路径定期过一遍。有些地址是在改版后才被外部转载或用户收藏激活的,几天不看就可能积累一批。把映射表当成一份会持续维护的文档,而不是一次性文件,改版带来的入口损失就能控制在一个可接受的范围内。