先明确一个前提:当旧站的历史地址无法与新站页面一一对应时,映射的目标不是追求每条旧地址都有唯一新目标,而是把可判定的地址归到最接近的有效页面,把不可判定的地址统一导向一个可解释的落点,并让这套判断规则在缺少完整数据或权限的情况下也能先跑起来。下面用一个假设情境把决策过程串起来。
假设你接手一个从旧站迁移到 WordPress 的项目,手上只有导出的访问日志片段和一份不完整的 sitemap,旧站后台已经无法登录,也没有原始数据库。日志里能看到的旧地址大约几百条,但其中一部分带参数、一部分是旧分类页、一部分已经无法判断原内容是什么。这时不要先写规则,先把地址分成三类:能确认新旧内容对应的、能确认属于同一栏目但具体文章不明的、完全无法判断的。
这个分类动作本身就会影响下一步:如果“完全无法判断”的比例很高,就不该为每条地址单独设计目标,而应尽早确定一个统一兜底页,把精力放在前两类上。
能确认内容对应的地址,映射依据应该是内容主题、标题或栏目的实际关系,而不是旧地址和新地址的拼写相似程度。旧地址里的分类名、日期、ID 往往在新站结构里已经不存在,按字符串匹配容易把不相关的页面配到一起。
具体动作:为这部分地址建立一张两列清单,左列旧地址,右列新地址,并在旁边加一列写判断依据,比如“旧标题与新标题一致”“同属原‘案例’栏目”。结果会影响下一步——如果依据一栏大量为空,说明这部分其实应该降级到“栏目级”或“兜底”处理,而不是继续当作精确对应。
当旧地址能看出属于某个栏目,但具体文章无法确认时,把整批地址指向该栏目在新站的列表页或聚合页,比逐条猜测更稳妥。这里要接受一个取舍:用户和搜索引擎到达的不再是原内容,而是该主题的入口页,因此栏目页本身要有清晰的标题和可继续点击的条目。
可执行的最小动作是给这批映射加一个统一标记,比如在清单里归为“栏目级”。它的作用是:以后拿到更完整的数据时,可以只重查这一批,而不必重新梳理全部地址。这个动作不会让栏目页自动获得任何排名优势,它只是让落点比 404 更可用。
完全无法判断的旧地址,统一指向一个兜底页,通常是首页或一个说明性的过渡页。选择哪个取决于旧地址的性质:如果旧地址看起来像内容页,兜底到首页会损失上下文;如果旧地址本身是废弃的临时页,兜底到首页可以接受。这个判断需要你根据日志里这些地址的访问量和来源来定,而不是凭感觉。
需要说清楚的是:兜底后旧地址的访问量下降、抓取量归零,并不能单独证明映射做对了。它也可能是旧链接本来就没有外部引用、或者抓取工具已经接受了新结构。要判断映射是否合理,应该结合旧地址是否仍被外部链接指向、兜底页是否返回正常状态码、以及日志里是否还有持续请求来综合看。
如果没有服务器配置权限、不能直接写重定向规则,仍然可以先完成判断层的工作:
这套顺序的价值在于:即使暂时不能改配置,你也能先回答“哪些地址该去哪里”,而不是等到有权限时才从零开始。等重定向生效后,再根据日志里残存的 404 反向补充映射,比一次性追求全覆盖更容易推进。最终判断这套映射是否成立的依据,是旧地址是否被稳定地导向了有意义的页面,而不是映射条数本身。