六年老站零死链迁移实录
背景:一个跑了六年的老官网
这个站点基于一套早期的 CMS 搭建,前后运行了六年,积累了一定数量的栏目页、列表页和文档页。随着底层系统暴露出版权合规与维护成本问题,改造被提上日程。
改造的目标很明确,只有三条:URL 一条都不能失效、收录不能掉、速度要比原来快。
第一步:先把老站的家底爬清楚
动手前,我们先对老站做了一次全量抓取,拿到实际存在的所有 URL,并按类型分类:
- 栏目页:按目录结构组织的频道入口;
- 列表页与分页:带页码参数的列表地址;
- 文档详情页:以文章 ID 命名的静态地址;
- 特殊入口:标签页、旧移动端目录、第三方插件路径。
这份清单有几十条到上百条不等,它就是后面所有验收工作的对照基准。
第二步:在新架构里还原 URL 规则
新站采用了新的技术架构,但路由规则是照着老站一条条还原的——包括目录层级、分页参数格式、文档页命名方式,以及那些看起来不起眼的特殊入口。
这里有个容易踩的坑:路由必须显式注册完整。漏掉一类规则,对应的页面就会整片 404,而且这类问题在首页看着完全正常,只有逐条比对才发现得了。
第三步:数据迁移与内容校验
文章正文、栏目结构、SEO 字段(标题、关键词、描述)整体迁入新库。迁移后我们重点检查了三件事:正文是否完整、图片路径是否有效、SEO 字段是否丢失。
其中图片是意外成本最高的一项——部分历史图片的原文件已经找不到,我们对缺失图片统一做了不渲染处理,避免出现碎图影响观感。
第四步:全量比对,逐条确认状态码
新站部署完成后,拿第一步的 URL 清单逐条请求,确认每一条的返回状态:
- 预期存在的页面 → 必须 200;
- 确实废弃的 → 明确 404,不 silently 跳首页;
- canonical 标签 → 指向正式域名,不能出现内网地址。
这一步做完,零死链的目标才算真正达成,而不是「看上去能打开」。
第五步:静态化提速
新站上线后开启了全站静态化:页面预先生成静态文件,由 Web 服务器直接返回,不走 PHP 渲染。实测首屏响应从动态渲染的百毫秒级降到更快的一档,同时服务器负载也明显下降。
需要说明的是,开启静态化后有个必须记住的规矩:后台改完内容要重新生成静态页,否则前台看到的还是旧内容。我们在生成流程里加了参数强制走动态渲染,避免了「抓到自己上次生成的旧页面」这个死循环。
结果
上线后,老站所有地址均正常访问,搜索引擎收录平稳过渡,未出现成片掉收录的情况;同时页面响应速度和安全合规状况都得到了改善。
如果你也有一套跑了好几年的老系统想改造,这套流程是可以直接复用的。
上一篇:六年老站零死链迁移实录
下一篇:六年老站零死链迁移实录
