网站收录

同一个页面被拆成多个 URL:大小写、斜杠、协议和 www 该怎么统一

同一个页面被 http/https、www、结尾斜杠、大小写拆成多个能打开的地址时,收录数字会变虚,canonical 和内链也容易互相打架。本文列出常见的 URL 变体类型,给出确定规范版本、用 301 收敛、统一内链与 sitemap 的处理顺序,并说明为什么不建议用 robots.txt 去挡这些重复地址。

网站收录

同一个页面被拆成多个 URL:大小写、斜杠、协议和 www 该怎么统一

运营中常遇到这种情况:内容只写过一次,站点却有几个地址都能把它打开。http 和 https 各一份,带 www 和不带 www 各一份,结尾加不加斜杠又能分出两份,URL 里字母大小写再变一下,数量还会继续翻。这些地址如果都能正常访问,又没有被明确分出主次,搜索引擎可能把它们当成不同页面分别抓取,甚至分别放进索引。

先看清站点自己产生了哪些变体

不用急着改,先把变体列出来。常见的几类:

  • 协议:http:// 与 https:// 同时能打开同一个页面。多数站点做过跳转,但跳转是否覆盖了所有路径、是否用的 301,需要逐个确认。
  • 主机名:example.com 与 www.example.com 各自能打开同样的内容。
  • 结尾斜杠:/about 与 /about/ 返回一样的内容,且都是 200 状态。
  • 大小写:/News/2024 与 /news/2024 显示相同页面。有的服务器区分大小写,有的会自动转换,行为不统一时更容易出问题。
  • 默认文件:/list 与 /list/index.html 都能访问。
  • 参数:排序、筛选、追踪参数生成的大量地址。这一类处理方式不同,本文不展开,但排查时要注意它们是否混在里面,导致误判。

为什么值得花时间统一

最直接的影响是判断变难。你在站长工具里看收录量,数字里混着重复地址,就很难判断真实的内容规模,也不清楚哪些目录真的被收录了。内链和外链同时被分散到不同版本上,同一份内容收到的信号被摊薄。

另一个常见问题是 canonical 写歪。比如页面自己声明规范地址是带 www 的版本,而站内大部分链接指向不带 www 的版本,蜘蛛每次抓到的线索互相矛盾,反而更犹豫。canonical 是提示而不是强制指令,它必须和跳转、内链、sitemap 的方向保持一致才有意义。

一致性比单点技巧更重要:跳转、canonical、内链、sitemap、外链,最终指向的应该是同一个地址。

处理顺序

  1. 确定唯一的规范版本。选一个主机名和一种协议,全站统一,通常建议 https 加一个固定的主机名写法。
  2. 用 301 把其他版本跳过去。协议、主机名、结尾斜杠、大小写这几类,尽量在服务器层做 301。不要长期用 302 顶着,也不要用 JS 跳转代替。
  3. 页面 canonical 指向自己所在的规范地址。注意是“自己”,不是随手指向首页或另一个内容相近的页面。
  4. 内链、导航、面包屑统一使用规范地址。这一步最容易被忽略,模板里残留的一个旧链接,就会持续给蜘蛛送出错误线索。
  5. sitemap 只放规范地址,不要同时提交多个版本。
  6. 外链能改的尽量改,改不动的不必强求,靠站内跳转慢慢收敛即可。

要不要用 robots.txt 挡住变体

不建议。被 robots.txt 挡住的地址,蜘蛛看不到内容,也就看不到上面的 canonical 和跳转关系,反而可能因为仍有外链存在而留在索引里,显示成没有摘要的结果。挡住不等于消失,能跳转就跳转。

怎么确认处理生效

处理完之后隔一段时间再查:手动访问不带协议的域名加路径,看是否都跳到同一地址;在站长工具里观察已收录的地址形态是否逐渐收敛;翻日志看蜘蛛是否还在抓旧版本。这个过程通常需要经过几次回访周期,不会立刻反映出来。

站点规模大的话不必一次改完。先处理流量高、被抓取多的目录,再逐步铺开,比一次性大改更容易定位问题,也方便对比改动前后的差异。