改 URL 结构本身不会掉排名,掉排名的是漏映射、错映射和上线顺序乱。这三次改版下来,我们最值钱的产出是一张映射表,不是技术方案。
映射表就五列
旧 URL、新 URL、类型、近 90 天点击、负责人。类型分三种:1:1 内容迁移、多对一合并、一对多拆分。
1:1 最好办,直接 301。合并类要确认内容真的合并了,不是把两个页都跳到首页。拆分类最麻烦——一个旧页拆成两个新页,301 只能给一个,另一个得靠内链和新 sitemap 去发现。
上线顺序
- 爬全站导出所有 URL,包括 sitemap 里的、内链里的、日志里被请求过的,三份合并去重。
- 按目录规则批量生成新 URL,人工抽检 10%。
- 写 301 规则,优先在 nginx 或 CDN 层做,应用层只留少数动态路由。
- 上线当天换 sitemap、替换站内链接、在两个平台提交改版。
- 旧 URL 的 301 至少保留一年,别三个月后就撤。
2026 年 2 月那次改版
一个 API 工具站把 /p/{id} 改成语义路径,3200 个 URL。映射表里 3100 条 1:1,100 条合并。上线第 4 天新 URL 开始被抓,两周收录 2400 个,第 6 周流量回到改版前的 98%,第 10 周超过 12%。
过程中踩了两个坑:CDN 缓存了旧跳转结果,导致部分 URL 一直跳到 404;应用路由的正则写宽了,新 URL 也被自己的规则重定向了一次,形成循环。两个都是上线当天发现的,说明必须在上线前用三种 UA 各测一遍。
怎么判断映射对不对
上线前写脚本做一遍全量校验:对每条旧 URL 发请求,看最终落点是不是映射表里的新 URL、状态码是不是 200、跳转次数是不是 1。3200 条 URL 跑一遍几分钟,比事后查两周划算。
一个简化办法
如果新目录能按规则一一对应,别逐条写规则。比如 /p/{id} 改成 /products/{slug},只要数据库里存了 id 和 slug 的对应关系,用一条带查表的 nginx 规则或者应用层中间件就能全量处理,比在配置里堆 3200 行靠谱得多。
没有一一对应关系的,才需要映射表。我们一般把映射表交给后端导入一张表,路由查表跳转,这样运营也能自己维护。
立场
别在流量高峰期改结构。选月末或者季度初,留两周观察期,这期间不做别的大改。改版期间最大的风险不是技术,是有人顺手"优化"了别的栏目。
元析智能
为软件公司做 SEO 和 GEO 优化