当旧站地址数量远大于新站页面,或者旧地址本身混乱、重复、带参数时,不要追求“一条旧地址对一条新页面”。更可行的是先把旧地址整理成可判定的类别,再为每类指定一个目标页或一个明确的处理结果。判断标准不是覆盖率越高越好,而是每条旧地址都有确定的去向,且这个去向与用户当时想找的内容足够接近。
从服务器访问日志、搜索控制台里的历史页面报告、旧站导出的栏目表或数据库里,取一份最近仍有请求的旧地址清单。至少保留四列:完整地址、请求次数、旧页面标题或栏目、你判断的用户意图。请求次数只用来排优先级,不能单独证明某个地址重要,因为爬虫回访、外部链接、误拼和监控请求都会造成请求量。
把清单按路径形态分组,通常会出现这几类:
/news/、/product/,通常可以映射到新站对应栏目。?page=2、?category=3,要判断参数是否改变内容。这一步的实际动作是:先只处理请求次数较高、且有外部链接或旧导航指向的地址。结果会直接影响下一步——如果高优先级地址都能归入少数几类,就可以用规则批量映射;如果每一类里都混着不同意图,就需要逐条判断。
地址结构相似不代表内容相关。旧地址 /article/2019/05/12/ 可能是一篇产品说明,新站对应的可能是产品页而不是博客文章。判断映射时,优先看旧页面标题、正文主题和用户从哪个入口进入,再看新站是否有同主题页面。
可以按以下顺序决定:
这里有一个常见取舍:把所有旧地址都指向首页,看似减少了 404,但用户和爬虫都会认为首页与旧地址无关,后续判断会更混乱。相比之下,少量明确的 404 或 410 更容易解释,也更容易在后续修正。
不要只写“旧地址改成新地址”这句话。把映射写成表,至少包含旧地址、目标地址、处理方式、依据和负责人。处理方式只有几种:301 永久跳转、302 临时跳转、410 已删除、404 未找到、保留原地址。选择哪一种,取决于内容是否永久迁移。
假设你手上有 200 条旧地址,其中 120 条能对应到新站页面,50 条对应到栏目页,30 条没有对应内容。一个可执行的分配是:
这个例子的数字只用于说明分类方法,不代表任何真实站点。实际动作是:先完成这 200 条的映射表,再在测试环境逐条检查目标地址是否返回正确状态、是否可访问、是否与旧内容主题一致。检查结果会决定哪些规则可以批量应用,哪些必须退回逐条处理。
映射上线后,旧地址请求量下降、新地址请求量上升,只能说明跳转可能生效,不能单独证明映射正确。还要看目标页面是否获得与旧页面相近的访问深度、用户是否继续点击站内链接、搜索控制台是否报告软 404 或重定向错误。
如果某个旧地址仍然有较高请求量,可能的解释包括:跳转未生效、外部链接仍指向旧地址、用户书签未更新、爬虫尚未重新抓取。不要因为请求量没有立刻归零就断定映射失败,也不要因为请求量归零就断定处理正确。更可靠的动作是抽查:从旧地址清单里随机取 20 条,逐条访问,记录返回状态、最终地址和页面主题。抽查结果会告诉你,下一轮应该扩大批量规则,还是回到映射表修正个别条目。
旧站改版后,地址数量、栏目结构和内容主题很难完全对齐。设计映射时,先接受“不是每条旧地址都有唯一新页面”这个前提,再为每条地址指定一个可解释的结果。能对应的用 301,能归类的用栏目页,不能对应的用 404 或 410,暂时不确定的保留原地址。这样做的结果不是覆盖率数字好看,而是每一条旧地址都有明确去向,后续排查时也能知道该改哪一条规则。