跳到正文
新闻飞钉团队

老站改版怕掉流量?上线前把这张 URL 迁移对照表做完

改版掉流量,多半死在旧链接变 404 上。这篇给出把旧站 URL 捞全、分四类做 301 映射、上线前六项检查和上线后 48 小时补漏的具体做法。

返回文章列表

改版最容易出的事故不是设计不好看,而是老链接一夜之间全变成 404。客户收藏的页面、已经收录的页面、别处文章里引用过的页面,改版后全部打不开。流量掉下去之后,恢复期往往比改版本身还长。

这篇只解决一件事:上线前把 URL 迁移做完,让每一条旧链接都知道自己该去哪。

一、先把旧链接捞全,别凭记忆

凭记忆能想起的通常只有十几页,而访问日志里往往躺着几百条。三份来源合并去重:

  • 服务器或 CDN 的访问日志,导最近 90 天,按访问量降序,取前 500 条
  • 旧站 sitemap.xml 里的全部地址
  • 站长平台「已收录页面」导出

清单按访问量排序,访问量就是优先级。判断标准:如果清单只有几十条,说明漏了——真实的旧链接里一定混着带参数、带分页、带年份的变体。

二、分四类,每类只给一条规则

类型 怎么判断 处理方式
一一对应 新站有同样内容的页面 301 到新地址,一条对一条写清
多对一 旧站十个分页合并成一个新页面 全部 301 到新页面,不要留一个当正主
已下线 内容不再提供 301 到最相关的上级栏目,不要一律丢首页
带参数 分页、筛选、追踪参数 分页映射到新分页;纯追踪参数 301 到无参数地址

唯一可以直接 404 的,是本来就该消失的页面,而且它在 90 天日志里访问量接近 0。有访问量却给了 404,等于主动扔掉一个入口。

三、301 规则写在哪、怎么写

静态站写在 _redirects、vercel.json 或 nginx 的 rewrite 里;动态站在路由层维护一张「旧路径 → 新路径」的映射表。两条经验:

  • 具体规则必须排在通配规则前面,否则会被通配吃掉
  • 通配要克制。只有当新旧路径结构完全一致时才用 /old/* 到 /new/*,结构不一致会变成软 404,搜索引擎不认
  • 如果连域名一起换,先做整域跳转,再做路径级跳转,顺序反过来会套娃

判断标准只有一条:curl -I 任意一条旧地址,返回码是 301,Location 指向最终页面,中间不出现连续两次以上跳转。

四、上线前的六项检查

  1. 访问量前 100 的旧链接逐条测试,全部 301,无 404、无 302
  2. 每条 301 的落点自身返回 200,不再二次跳转
  3. 新站 sitemap 只含新地址,旧地址一条都不出现
  4. 每个页面的 canonical 指向自己的新地址
  5. 旧站 robots.txt 不要整站 Disallow,挡住抓取,301 就传不过去
  6. 新站内链里不能还残留指向旧地址的链接

五、上线后 48 小时与 30 天

48 小时内看两件事:抽 20 条旧链接复测返回码;翻日志里 404 的前 20 名,凡是访问量不为 0 的,当天补一条 301。第 7 天重新提交一次站点地图。第 30 天对比改版前后同一批页面的自然搜索进入量,掉得最多的那批地址,先查落点内容是否对得上——内容错配比 301 本身更容易造成下滑。

合格的收尾标准:30 天后,清单前 100 的旧链接累计 404 次数为 0。

飞钉 AI 建站的后台带 SEO 巡检,会定期扫全站链接状态和页面基础项,改版换过路径后,死链会直接出现在巡检结果里;7×24 智能客服能接住访客提问,线索自动进 CRM,上线那几天不至于把来问的人漏掉。但这张迁移对照表还是得你先做,工具只负责发现问题,替不了你决定每条旧链接该去哪。