网站收录

同一页面的多种 URL 写法:大小写、结尾斜杠、www 与协议怎么收敛

同一个页面可能以多种 URL 写法被访问和抓取,大小写、结尾斜杠、www 与协议差异都会让搜索引擎看到多个地址。本文梳理如何确定首选版本,用 301、canonical、内链和 sitemap 统一信号,并观察抓取与收录数据是否随之稳定。

网站收录

同一页面的多种 URL 写法:大小写、结尾斜杠、www 与协议怎么收敛

同一个页面,在浏览器地址栏里可能有很多种写法:带 www 和不带 www、http 和 https、结尾有没有斜杠、路径里字母大小写不同、参数顺序不一样。对用户来说这些地址大多能打开,但对搜索引擎来说,每一种写法都可能被当成一个独立 URL 去抓取和判断。如果这些版本同时存在,收录数据就容易显得杂乱:索引里可能同时出现多个地址,或者你期望收录的那一个反而没被选中。

先确定一个首选版本

处理这类问题,第一步不是急着改代码,而是先定下来:这个页面以后用哪个 URL 作为标准地址。建议把范围缩到最小:协议、域名、路径、结尾斜杠,各选一个固定写法。比如统一用 https、统一带 www 或不带 www、目录页保留结尾斜杠、文章页不带结尾斜杠。选定之后,站内所有入口都往这个版本上靠。

这一步看起来简单,但很多站点的问题恰恰出在“没有明确标准”。不同栏目用不同写法,编辑复制链接时又随手粘贴,时间一长,同一页面就散成了好几个版本。

服务器层先做跳转

标准版本确定后,优先在服务器层把其他写法 301 到标准地址。常见的有:

  • http 访问统一跳转到 https;
  • 不带 www 的域名跳转到带 www,或反过来;
  • 结尾斜杠的有无,按目录和文件类型分别统一;
  • 路径大小写不一致时,跳转到全小写或项目约定的形式。

301 是永久跳转,适合这种地址归一。尽量在服务器配置里一次性处理,不要只依赖页面里的 canonical 标签。因为 canonical 是提示信号,而 301 会直接告诉爬虫“这个地址已经换了”。两者配合使用,效果通常比单用一个更清楚。

canonical 和内链别给出矛盾信号

有些站点因为历史原因,没法立刻把所有旧地址都做 301,这时可以在页面里用 canonical 标签指向首选版本。但要注意,canonical 不是万能的:如果同一个页面里,A 版本 canonical 到 B,B 又 canonical 到 A,或者内链大量指向非首选版本,爬虫收到的信号就会互相打架。

实际操作中,可以按这个顺序检查:

  1. 页面里的 canonical 是否指向首选版本;
  2. 站内导航、面包屑、列表页链接是否都用了首选版本;
  3. sitemap 里提交的是不是首选版本;
  4. 分享按钮、跟踪参数生成的地址是否又带出了新变体。

其中内链和 sitemap 经常被忽略。它们不给“标准答案”的标签,但会直接影响爬虫优先抓取哪个地址。

观察抓取与收录是否跟着收敛

改完之后,不要只看某一天的索引量就下结论。URL 归一是需要观察窗口的:旧地址可能还会被访问一段时间,服务器日志里能看到跳转记录;索引里的旧版本也可能过一阵才慢慢减少。可以重点看两件事:

  • 日志里爬虫请求的地址,是否逐渐集中到首选版本;
  • 搜索结果里同一页面是否还在用不同 URL 展示。

这里要区分“抓取”和“收录”。爬虫抓取了旧地址,不代表它还会把旧地址留在索引里;反过来,索引里暂时还有旧地址,也不代表新地址没被处理。把这两个层面分开看,排查时不容易被单日数据带偏。

常见容易漏掉的几处

如果做完上面几步,URL 变体还是反复出现,可以回头检查这些地方:

  • 开发或测试环境留下的绝对地址,被复制到了正式页面;
  • CDN 或反向代理层做了额外跳转,和源站规则不一致;
  • 站内搜索、筛选、排序参数生成了可抓取的地址;
  • 旧版页面没有下线,但入口已经撤掉,形成“孤儿地址”。

URL 归一不是一次性工作,更像一条需要维持的规则。新栏目上线、改版、换域名时,都值得重新核对一遍首选版本有没有被新的写法冲散。把标准固定下来,后续的收录判断和重复内容处理都会省事很多。