一个页面往往不止一个地址能打开:带 www 与不带 www、http 与 https、结尾有没有斜杠、参数顺序不同,甚至大小写混用,都可能返回同一份内容。对用户来说都能看,对搜索引擎来说却是多个 URL。收录阶段出现重复内容、权重分散、抓取次数被浪费,通常从这里开始。
先找出重复地址是从哪里来的
常见来源并不复杂,但容易漏掉:
- 协议和主机名:http 与 https,www 与非 www,带默认端口和不带端口。
- 路径细节:结尾斜杠有无、目录大小写、中文路径编码方式不同。
- 参数:排序、筛选、会话 ID、跟踪参数、参数顺序变化。
- 功能页:打印页、分享页、手机版独立地址、旧版入口。
这些地址如果都返回 200,蜘蛛会分别抓取、分别判断,最后可能只选一个留下,也可能留下多个相似版本。
确定主版本,用 301 收口
先选一个主版本。判断依据可以看外链最多的那个、日志里蜘蛛抓得最多的那个、sitemap 里一直声明的那个,以及用户最常用的访问方式。选好之后,其余版本统一做 301 永久重定向到主版本。
不建议用 302 长期代替 301,也不要用 JavaScript 跳转或 meta refresh 来做收口。这些方式可能被当成临时处理,蜘蛛仍会保留原地址。重定向链也要尽量短,避免 A 跳 B、B 再跳 C。
站内链接和 sitemap 要保持一致
重定向只是兜底,真正影响判断的是站内信号。导航、面包屑、文章内链、分页链接、sitemap 里出现的地址,都应该是主版本。如果一边 301 收口,一边内链还在大量指向旧地址,蜘蛛会持续发现旧 URL,收口速度会被拖慢。
canonical 可以作为补充,但不要把它当成唯一手段。页面能 301 的,优先 301;不能 301 的,比如参数页、打印页,再用 canonical 指向主版本,同时确认 canonical 地址本身返回 200 且可被抓取。
几个容易忽略的细节
- 大小写:有些服务器区分大小写,/Page 和 /page 是两个地址;有些服务器不区分,但链接写法不统一仍会制造多个入口。
- 结尾斜杠:/a 和 /a/ 是否都返回 200,要看服务器配置。目录型地址通常保留一种写法。
- 参数顺序:?a=1&b=2 与 ?b=2&a=1 内容相同,但 URL 不同。可以通过服务器或 CDN 统一参数顺序,或对无实际意义的参数做处理。
- 跟踪参数:utm、fbclid 之类参数最好在服务器端忽略,或通过 canonical 指向无参数版本,避免每个分享渠道都产生一个地址。
收口之后看什么指标
改动后不要只看收录量。可以按顺序观察:服务器日志里旧地址的抓取次数是否下降;新主版本的抓取和返回状态是否稳定;索引里重复或备用版本是否减少;内链和 sitemap 中是否还有旧地址残留。
如果旧地址被抓取后返回 301,这是正常过程。蜘蛛需要时间重新确认,通常不会立刻完成替换。大批量修改时建议分批做,先改一组目录或一种参数,观察日志和索引变化后再继续。
URL 收口的目标不是让所有地址消失,而是让搜索引擎清楚知道哪一个地址代表这份内容。主版本稳定、内链一致、重定向清晰,收录判断才会更干净。
最后提醒一句:不要为了让旧地址快速消失就返回 404 或 410,除非那些地址确实不再使用。正常做法是保留 301,让它把已有信号传递到主版本。