换 URL 等于换身份
搜索引擎的索引是按 URL 逐条记录的。站点改版换域名、调整目录结构、把参数页改成静态页之后,同一个页面在新地址上对你来说是老页面,对搜索引擎来说是全新 URL。旧地址上的抓取历史和已有记录不会自动搬过去,需要你用跳转和链接明确交接。
所以迁移期要同时做两件事:让旧 URL 把用户和爬虫送到新 URL;让新 URL 尽早被发现、被抓取、被重新判断内容。只做前者,收录会拖很久;两件都不做,旧 URL 会陆续掉出索引,新 URL 又迟迟进不来。
先做一张靠谱的映射表
映射表是整次迁移的底稿,做不好后面全是返工。
- 尽量一对一。旧 A 对应新 A,旧 B 对应新 B。整站跳首页会让大量旧 URL 指向同一目标,等于主动制造重复入口,用户也找不到内容。
- 不要跳转链。旧地址到中间页再到新地址,两跳以上会拖慢抓取,也削弱交接效果。旧 URL 直接 301 到最终地址。
- 区分该跳和该删。确实下线的页面用 404 或 410,不要把每一个旧 URL 都往新站首页导。
- 统一 URL 写法。大小写、结尾斜杠、参数顺序、http 与 https,趁迁移一次性收敛成一种形式。
301 只是交接的一半
内链和导航先改
站内所有指向旧地址的链接都要替换成新地址,包括导航、面包屑、列表页和正文里的相关链接。否则爬虫会一直从内链走到旧 URL,再靠跳转绕到新 URL,白白多走一层。
sitemap 与提交入口
新站发布后尽快产出新的 sitemap,只放新 URL,并且只放可索引的页面。旧 sitemap 不必立刻删除,可以保留一段时间,让爬虫继续从旧地址被引导过去。平台上的站点验证与提交入口也要同步到新域名。
新页面自己声明自己
新 URL 上的 canonical 应该指向自身。迁移期最常见的疏漏,就是页面换了域名,但 canonical、og:url、结构化数据里的地址还停留在旧站,等于让新页面主动认领旧身份。
旧站要不要继续保留
如果旧域名还能访问,保留 301 一段时间是常见做法,跨度往往在几个月以上,具体取决于站点规模与抓取频率。跳转层长期存在本身不是问题,前提是它稳定、直达、不返回 5xx。
迁移期容易踩的几个坑
- 用 302 或 JS 跳转代替 301,信号传递弱,收敛更慢。
- 新站上线时忘了去掉测试阶段的 robots 屏蔽或 noindex 标记,爬虫进不来。
- 跳转过程中丢失参数,导致原本带参数的页面全部落到同一个地址。
- 新旧两套 URL 长期同时可访问且内容相同,形成重复。
- 只处理了 HTML 页面,忽略了图片、附件、PDF 等资源的地址。
迁移不是一次操作,而是一段观察期。上线后旧 URL 还会被持续抓取,索引里的记录会逐步替换,中间出现新旧混排属于正常现象。
上线后的自查顺序
先确认新 URL 是否被抓取、是否进入索引,再看旧 URL 上的抓取是否已经指向新地址。把服务端日志和索引报告对照着看,比只盯某一边更容易定位问题。如果某一批目录始终没有新 URL 进索引,优先检查这批页面的跳转是否可达、站内链接是否已经更新。
规模较大的站点可以按目录分批迁移,一次处理一块,每块走完“跳转—内链—sitemap—观察”的流程再动下一块。分批的好处是出问题时影响面可控,也更容易把原因归到具体的改动上。