网站收录

页面做过 301 跳转之后:新地址、老地址与内链的收口顺序

给老地址做完 301 之后,索引里往往还留着它。本文按跳转类型、服务端响应、索引现状、内链与 sitemap 四条线给出核对顺序,帮助区分“还没更新”和“根本没生效”,避免一上来就删跳转或反复提交。

网站收录

页面做过 301 跳转之后:新地址、老地址与内链的收口顺序

站点调整 URL 结构、合并栏目或更换域名时,一般都会给老地址做 301。做完之后常常会遇到一件事:索引里老地址仍然存在,有的还继续出现在搜索结果里。这时候容易有两种反应,一是反复提交新地址,二是干脆把老地址的跳转删掉。两者都不太稳妥。更值得做的,是按跳转类型、跳转执行情况、索引现状、内链与入口这几条线依次核对。

先确认跳的是哪一种

同样是“跳转”,浏览器里的观感差不多,但搜索端收到的信号差别很大:

  • 301 永久跳转:最常见的迁移信号,用于结构永久调整。
  • 302、307 临时跳转:本来用于临时场景。如果长期挂着,搜索端可能继续保留老地址,甚至反复抓取老地址。
  • meta refresh 与 JS 跳转:服务端返回的仍是 200,只是页面里写着跳转。这种地址本身会被当成正常页面处理。
  • 跳转链:A 跳到 B,B 又跳到 C。链条越长,抓取端越容易中途停下。

把这几种和自己的实际情况对一遍,很多“看起来没生效”的问题,其实是类型用错了,或者压根没走服务端跳转。

检查跳转是否真的发生在服务端

用不带 JS、不带 Cookie 的方式直接请求老地址,看返回的状态码和响应头。核对要点大致是:

  1. 状态码是不是 301 或 308,而不是先返回 200 再靠前端跳。
  2. Location 指向的是不是最终地址,而不是链条中的下一跳。
  3. 最终地址本身是不是 200。有些链条最后落在一个 404 或空页面上。
  4. 跳转是否对搜索端和普通访客返回一致。有些站点会按 UA 区分,这容易造成两边看到的不是同一个东西。

如果老地址返回 200,只是页面里在跳,那它在搜索端就是一个独立页面,被收录是正常结果,不能算“没生效”。这类页面要么改成服务端跳转,要么按普通页面决定留还是收。

索引里老地址还在,先别急着下判断

做了跳转不等于索引立刻更新。老地址在一段时间内继续出现在索引和搜索结果里,本身是可以理解的。真正需要区分的是下面三种情况:

  • 老地址被收录,但点开跳到了新地址。这类通常会逐步被替换。
  • 老地址被收录,点开仍是老内容。说明服务端跳转没生效,或者中间存在缓存。
  • 新地址还没被收录,老地址仍在顶替展示。这时重点不在老地址,而在新地址本身。

对第二种,先回到上一步检查响应;对第三种,重点是把新地址的入口、导航和内容理顺,而不是反复去动老地址。

内链、外链和 sitemap 里还指向老地址

跳转只是兜底,不是入口。真正影响抓取优先级的,是站内还往哪里指。常见的遗漏有:

  1. 导航、面包屑、侧栏里仍写着老地址。
  2. 正文里的历史内链没有同步更新。
  3. sitemap 里同时列着老地址和新地址。
  4. 老地址的 canonical 指向自己,或者干脆没写,而新地址的 canonical 又反过来指向老地址。

这几处对齐之后,搜索端收到的信号才是“大家都指向新地址”。canonical 写反是很常见的一处,值得单独看一眼。另外,老地址如果还有外链进来,不必急着彻底断开,保留一个轻量的 301 通常比直接 404 更平稳。

什么时候可以考虑停掉跳转

并没有统一的时间表。可以先看两个信号:老地址在服务端日志里的请求量是否已经降到很低,以及搜索结果里是否基本被新地址替代。即便到了这一步,保留一个 301 的成本通常也很低,除非有明确的业务原因必须删除。

把跳转当成过渡手段,把入口和内容当成长期手段。前者处理历史,后者决定新地址能不能被稳定发现。

整体顺序可以记成:先看跳转类型,再看服务端响应,然后按索引现状分类,最后回到内链与 sitemap 收口。每一步只解决一个问题,避免一上来就删跳转、改 canonical 或者反复提交。