搜索抓取

URL 大小写、结尾斜杠与参数顺序:一个页面被拆成好几个地址

蜘蛛把 URL 当作字符串处理,同一篇内容存在多种写法时,抓取次数和站内信号会被摊薄。本文梳理重复地址的常见来源,并给出一套可执行的顺序:先定规范形式,再统一站内出口,最后用 301 与 canonical 收敛,附上验证方法与容易踩的坑。

搜索抓取

URL 大小写、结尾斜杠与参数顺序:一个页面被拆成好几个地址

在蜘蛛眼里,URL 首先是一串字符串,而不是“这个页面”。所以当同一篇内容在网上存在好几个地址时,蜘蛛不会自动帮你合并——它会分别排队、分别抓取,把原本可以集中在一个地址上的抓取次数和站内信号摊薄。

重复 URL 通常从哪几个地方冒出来

  • 协议与主机名:http 与 https、带 www 与不带 www 同时可访问,且互相之间没有跳转。
  • 大小写:/About/Us 和 /about/us 在多数服务器上会被当成两个不同路径。
  • 结尾斜杠:/list 与 /list/ 返回同一份内容。
  • 默认首页文件:/index.php、/index.html、/ 各自返回一次 200。
  • 参数顺序与无用参数:?a=1&b=2 与 ?b=2&a=1;跟踪参数、会话 ID、来源标记。
  • 排序与视图参数:按时间排序、按价格排序、打印页、纯文本页。

这些形态单独看都不致命,但如果站内链接、Sitemap、canonical 各用一套写法,蜘蛛拿到的就是互相矛盾的信号。

为什么值得花时间收拾

一是抓取次数分散。同一个页面的多个地址都要抓一次,服务器也要多处理几次请求,对资源有限的小站不划算。二是信号分散。外链、内链、分享链接如果指向不同形态,页面很难形成一个清晰的“主地址”。三是分析失真:日志里的 URL 形态太多,你会误判哪些页面真的被抓得少。四是维护成本,改版时改了规范形式,旧形态的跳转没跟上,就会出现新的重复。

处理顺序:先定规范,再统一,最后收敛

  1. 先确定唯一规范形式:选一个协议、一个主机名(www 或非 www)、统一小写、统一是否带结尾斜杠。定了就不再改。
  2. 站内所有出口统一:导航、列表、正文内链、分页、Sitemap、RSS、站内搜索的跳转地址,全部按规范形式生成。这一步比做跳转更重要,因为蜘蛛主要是顺着链接走的。
  3. 其他形式做 301:旧域名、旧路径、大写地址、带默认文件名的地址,一次性永久跳转到规范地址。避免 302 换成 301、避免跳转链一串接一串。
  4. 无法跳转的用 canonical:跟踪参数、排序参数这类不能直接 301 的,用规范链接标签声明主地址,同时尽量别在站内大量暴露这些参数链接。
  5. 核对 Sitemap:Sitemap 里只放规范 URL,不放参数版、也不放被跳转的旧地址,否则等于自己制造矛盾。
  6. 验证:抽查核心页面的响应,看跳转是否一步到位、状态码是不是 301、返回内容是不是规范页。

几个常见坑

  • canonical 指向的地址本身被 noindex 或返回 404,等于把信号指向空处。
  • Sitemap 提交的是 A 形态,内链用的是 B 形态,蜘蛛两边都要抓。
  • CDN 或缓存层把大小写不同的请求分别缓存,导致同一内容有多份缓存。
  • 跳转链过长,A→B→C→D,每次都要多一个往返。
  • 参数页互相 canonical,最后谁也说不清主地址是谁。

怎么确认自己做对了

  • 从服务器日志里按路径形态筛一遍,看是否还有大写、双斜杠、带 index 的请求被大量抓取。
  • 随机抽 10 个核心页面,手动把地址改成“错误形态”,看是否一步 301 到规范地址。
  • 对比 Sitemap 里的 URL 和页面内链的 URL,两者应完全一致。
  • 留意新上线的功能:分页、分享、导购参数最容易带进新的重复形态。
URL 规范化不是一次性的整理,而是一条持续维护的底线:只要站点还在加功能、改结构,新的重复地址就会不断冒出来。