当旧博客的地址无法逐条对应到新页面时,不要追求“每条都有唯一目标”,而应先把旧地址分成三类:能对应、能合并、只能放弃。对能对应的做一对一,对能合并的做多对一,对只能放弃的返回 410。判断依据不是旧地址数量,而是每个旧地址是否还有可承接的等价内容。你可以先拿一份真实的旧地址清单,按下面的步骤逐条处理。
打开旧站的地址列表,逐条问两个问题:新站里有没有内容等价或高度接近的页面?这个旧地址过去是否带来过站外链接或用户收藏?把结果写成三列:旧地址、候选新地址、状态。状态只允许三种:一对一、多对一、放弃。一对一用于内容主题基本一致的页面;多对一用于若干旧文被合并成一篇新综述的情况;放弃用于旧内容已删除且没有替代主题的地址。标注完成后,你会得到一份可执行的映射表,而不是一堆待定项。
很多人会在“全部 301 到首页”和“逐条找近似页”之间摇摆。这两种做法都成立,但适用条件不同。
全部指向首页适合旧站规模小、旧内容与当前主题整体偏离、且你无法逐条判断等价关系的情况。代价是:用户和爬虫到达首页后仍需自行寻找目标,旧地址承载的具体语义被抹平。如果旧站有大量带外链的文章页,这种做法会让这些链接的价值集中到一个泛页面上,而不是落到相关主题。
逐条找近似页适合旧站内容仍与当前主题连续、且你能为多数旧地址找到等价页面的情况。代价是人工判断量大,且近似不等于等价:把“某工具安装教程”指向“某工具使用总览”会让用户多一次跳转,但如果总览里确实包含安装步骤,这个跳转是可接受的。判断标准是目标页是否直接回答了旧页的核心问题,而不是标题是否相似。
如果两类条件同时存在,可以混合:主题连续的文章逐条映射,主题已放弃的文章指向最接近的分类页,无分类页可承接的返回 410。
假设你手里有一条旧地址 /post/old-tool-setup,内容是某工具的安装与初始配置,新站已把安装、配置、常见问题合并为一篇总览 /guide/tool-overview。处理动作如下:
/guide/tool-overview,状态为多对一。如果总览页只讲了工具介绍,没有安装步骤,那么这条映射不成立。此时要么在总览页补充安装段落后再映射,要么把旧地址标为放弃并返回 410。这个判断直接影响下一步:映射成立时你继续处理下一条;不成立时你先补内容,而不是先改跳转。
多对一不是把不相关旧文都塞给同一篇新文。成立的边界是:若干旧地址的主题能被同一篇新文完整覆盖,且用户从旧地址进入新文后不需要再搜索。比如三篇分别讲安装、配置、卸载的旧文合并为一篇操作总览,属于多对一。如果三篇旧文分别讲三个不同工具,而新站只有一篇泛泛的“工具合集”,这属于勉强对应,用户到达后仍要自行筛选,此时更合理的做法是分别指向各自工具的分类页,没有分类页则返回 410。
放弃也不等于删除。返回 410 表示该地址的内容已不存在且无替代,适合旧内容已彻底下线、没有等价主题、也没有值得保留的外链的情况。如果旧地址仍有外链,优先考虑是否能在新站找到主题相近的承接页;找不到时,410 比强行指向首页更诚实,但你会失去这部分链接带来的用户入口。
发布映射后,至少抽查三类地址:一对一、多对一、返回 410 的各一条。检查响应状态是否符合预期,检查目标页是否可正常访问,检查目标页内容是否与旧地址主题相关。如果发现某条 301 指向了不相关页面,先修正映射,再继续观察。不要因为某条旧地址的请求量下降就断定处理正确,请求量下降也可能来自抓取节奏变化、外链失效或用户不再访问,需要结合响应状态和目标页内容一起判断。
最后,把映射表保留为可维护文件,而不是一次性脚本。后续新增旧地址或调整新页结构时,你只需要更新对应行,就能继续沿用同一套一对一、多对一、放弃的判断标准。