先给出结论:当旧地址无法与新页面一一对应时,不要强行拼凑一对一映射,而应按“内容是否仍有价值”分成三类处理——仍有价值的旧内容迁移到最接近的新页并做整站跳转,已无价值的内容返回410,仍有外部引用的页面保留一个轻量入口页。下面以你手边的一份旧地址清单为对象,说明如何把它变成可执行的处理方案。
拿一份旧站导出的URL清单,逐条标注三个信息:这个地址过去承载什么内容、现在站内是否还有同类内容、它是否还被外部引用。这三项决定了后续动作,而不是先写一堆RewriteRule再回头找目标。
判断“仍有价值”时不要只看标题相似度。假设旧站有一批产品参数页,新站把同类产品合并成了一个系列页,那么旧参数页应指向系列页中的对应锚点或子区块,而不是全部堆到系列页顶部。这个动作的结果是:用户到达后能继续阅读,而不是再点一次导航。
很多旧站改版后把所有失效地址都指向首页,短期看减少了404,但用户和外部引用的上下文全部丢失。更稳妥的做法是为每个迁移类地址指定一个“最近的下一站”,判断标准是:用户从这个旧地址进来,最想继续看什么。
具体操作可以这样做:把旧地址按栏目分组,每组先确定一个主目标页,再为组内个别差异较大的地址单独指定目标。比如旧站的“新闻详情”批量指向新站的新闻列表页通常成立,但如果某篇旧新闻讲的是某个已停用的服务,就应该指向新站对应的服务调整说明,而不是新闻列表。
这里有一个容易忽略的条件:如果新旧内容只是主题相近、但结论或适用范围已经不同,直接跳转会让用户误以为内容没变。此时更合适的做法是保留一个简短说明页,写清旧内容的状态,再给出新入口。这个动作会影响下一步——你需要在映射表里额外标记“需说明页”,而不是只写目标URL。
映射表至少包含四列:旧地址、处理类型、目标地址或状态码、判断理由。理由这一列不是形式,它决定了以后复查时能不能快速判断某条规则是否还成立。
假设你手上有300条旧地址,可以先按处理类型统计数量。如果“退出类”占比很高,说明旧站有大量内容本身就不适合迁移,这时不必勉强保留;如果“迁移类”集中在少数几个栏目,说明新站的信息架构可能还没有覆盖这些主题,需要先补内容再谈跳转。这个统计结果会影响你是先改跳转规则,还是先调整新站结构。
对于确实需要保留的地址,可以用301做永久跳转,对临时调整用302。但要注意:状态码的选择取决于内容是否真的永久迁移,而不是取决于你希望搜索引擎多快更新。如果目标页以后还可能再变,就不要急着用永久跳转。
规则上线后,不要只看“有没有报错”。可以抽取迁移类、退出类、保留类各若干条,逐条访问旧地址,确认最终落点与映射表一致。对退出类,确认返回的是明确的失效状态而不是跳到一个无关页面;对保留类,确认说明页上给出的新入口仍然有效。
如果发现某条旧地址的访问量或抓取量降为零,这不能单独证明处理正确。它也可能是因为外部引用早已消失、该地址本来就没有入口,或者抓取工具暂时没有覆盖。把访问日志、外部引用记录和映射表放在一起看,才能判断是规则生效还是地址本身已无人使用。
最后回到你手里的那份清单:先分类,再定目标,再记录理由,最后抽样验证。整个过程不需要一次做完,但每一步的结果都应该让下一步更明确——比如分类结果决定要不要补内容,抽样结果决定要不要调整目标页,而不是只改一条跳转规则就结束。