搜尋抓取

同一頁面多個 URL:末尾斜杠、大小寫與參數顺序带来的重复抓取

同一個頁面被寫成多個 URL,蜘蛛會当成多個入口分別抓取。本文梳理末尾斜杠、大小寫、預設首頁、參數顺序等常见重复来源,說明它們對抓取预算和連結權重的影响,並给出 301、canonical、内鏈统一、Sitemap 只提交規范地址等收敛办法。

搜尋抓取

同一頁面多個 URL:末尾斜杠、大小寫與參數顺序带来的重复抓取

很多站点在做抓取分析时會發現,日誌里同一個内容對應着好几條 URL。它們並不是重复内容,而是同一個地址的不同寫法。對浏览器来说差別不大,對蜘蛛来说却是几個獨立的入口,每一次都要單獨走一遍抓取流程。

蜘蛛只認字符串,不認頁面

蜘蛛拿到一個連結,最先判断的是“這個 URL 字符串有没有抓過”。如果没有缓存记錄,就排進队列。至于這個地址打開後是不是和站内另一個地址返回同样的内容,要等到抓回来、解析、比對之後才知道。也就是说,只要連結寫法不同,前期的請求和下载就已经發生了,後面再發現是同一頁,成本也已经付出去了。

最常见的几種“一頁多址”

  • 末尾斜杠:/about 與 /about/ 在部分服務器配置下都能返回 200。
  • 大小寫:/News 與 /news 是否等價,取决于服務器、CDN 與路由規則。
  • 預設首頁文件:/ 、/index.html 、/index.php 同时可訪問。
  • 协议與域名:http 與 https、带 www 與不带 www,各留了一份。
  • 參數顺序與冗余參數:?a=1&b=2 與 ?b=2&a=1,後面再挂一串来源标记。
  • 跟踪與展示參數:分享渠道、排序方式、每頁條數,往往组合出大量地址。

代價不止是多抓一次

  • 抓取预算被摊薄:同一份内容占掉多條 URL 的抓取名額,真正需要更新的頁面排队更久。
  • 連結權重被分散:站内指向同一頁的連結落在不同寫法上,信号被拆成几份。
  • 資料失真:日誌、統計、抓取报告里同一頁出現多次,判断哪些栏目被冷落时容易誤判。
  • 規范地址不稳定:搜尋引擎可能在几個寫法之間来回切換,展示出来的地址不固定。

收敛到唯一 URL 的几個動作

  1. 選一個規范寫法,其余寫法统一 301 到它,並且保持長期有效。
  2. 頁面上保留 canonical,指向規范地址,且與 301 的目标一致,不要互相矛盾。
  3. 内鏈、Sitemap、分享按钮、RSS 里的連結全部使用規范寫法。内鏈尤其重要,它决定了蜘蛛日常走的路。
  4. Sitemap 只提交規范地址,不要同时提交带斜杠和不带斜杠两個版本。
  5. 參數頁分類處理:能合並的合並,纯展示用的去掉,确實需要的保留並给出明确的規范指向或抓取指令。

归一化时尽量用 301,不要用 JS 跳轉或 302 临时跳轉来顶替,蜘蛛對後两者的處理不如永久跳轉干脆;也不要把整類參數用 robots.txt 全部挡掉,挡住抓取的同时,URL 的發現和後續判断也一並被挡掉了。

怎么發現自己站里的重复 URL

  • 在日誌里搜同一段路径,看是否存在大小寫、末尾斜杠不同的抓取记錄。
  • 检查站点抓取統計里,同一标题是否對應多個地址。
  • 抽查内鏈,尤其是模板生成的連結、面包屑、分頁導航。
  • 確認服務器在补斜杠或补預設文件时,返回的是 301 還是 302。
归一化不是配置一次就結束的事。新增栏目、改版模板、接入新的統計或推廣工具,都可能重新引入新的寫法,隔一段時間复查一次比較稳妥。

把 URL 寫法收敛好,不會立刻带来什么變化,但它能让蜘蛛的每一次訪問都落在真正需要被看到的頁面上,也让後續的抓取分析少掉很多噪音。