搜尋抓取

搜尋蜘蛛抓取:URL 大小寫、结尾斜杠與預設端口造成的重复發現核對

同一頁面出現大小寫、结尾斜杠、預設端口、預設文档等 URL 變体时,搜尋蜘蛛容易把它們当作多個入口分別抓取,抓取预算被分散,規范頁面的信号也容易被稀释。本文梳理這些重复 URL 的常见来源、核對顺序,以及通過服務器重定向、内鏈统一、Sitemap 與 canonical 收敛入口的實操方法。

搜尋抓取

搜尋蜘蛛抓取:URL 大小寫、结尾斜杠與預設端口造成的重复發現核對

同一個頁面在服務器上可能對應多個可訪問 URL:带 www 與不带 www、结尾有斜杠與没有斜杠、大小寫混用、預設端口顯式寫出、預設文档 index.html 是否出現。對用戶来说這些地址打開的内容一样,但對搜尋蜘蛛来说它們是不同的 URL 字符串。URL 發現阶段没有做收敛时,蜘蛛會把每個變体都放進待抓队列,抓取预算被切碎,頁面的聚合信号也可能被分散到多個地址上。

重复 URL 的常见来源

  • 大小寫:路径中出現大寫字母,例如 /Product/ 與 /product/,在区分大小寫的服務器或 CDN 規則下會被视為两個地址。
  • 结尾斜杠:/list 與 /list/ 同时返回 200。
  • 預設端口:https://example.com 與 https://example.com:443 都能訪問。
  • 預設文档:/about 與 /about/index.html 各自可訪問。
  • 编碼差异:中文或空格路径出現不同百分号编碼形式,例如 %E4%B8%AD 與直接字符形式。
  • 协议與主机名:http 與 https、www 與非 www 同时可解析,且没有强制跳轉。

對抓取的實际影响

蜘蛛抓取时通常按 URL 字符串去重,而不是按頁面内容去重。變体越多,同一份内容被重复請求的次數越多。表現可能是日誌里抓取量不低,但真正有抓取價值的規范 URL 請求數被摊薄;同时,如果各個變体上的 canonical、内鏈指向不一致,蜘蛛在選代表頁时會出現摇摆,入口归属變得模糊。

重复 URL 不會直接導致頁面被惩罚,但它會浪費發現和抓取资源,並让頁面信号难以集中到唯一地址上。

核對與收敛顺序

  1. 先在服務器或 CDN 层统一主机名與协议:把 www 與非 www、http 與 https 通過 301 跳到唯一形態;跳轉目标使用規范主机名,避免跳轉鏈。
  2. 處理端口與預設文档:顯式端口和預設文档訪問统一 301 到不带端口、不带預設文档的路径;確認重寫規則不會與跳轉規則互相触發循环。
  3. 统一路径大小寫與结尾斜杠:選擇一種形式作為規范,其余 301;注意 CDN 回源規則是否区分大小寫,避免邊缘與源站判断不一致。
  4. 统一站内連結:導航、面包屑、分頁、正文内鏈、分享按钮都使用規范 URL。站内連結是蜘蛛發現路径的主要来源,連結形態不统一會把變体重新带回队列。
  5. Sitemap 只提交規范 URL:Sitemap 中不出現預設文档、顯式端口或大小寫變体;Sitemap 里的地址應與頁面 canonical 一致。
  6. canonical 自引用:規范頁面 canonical 指向自身;不要多個變体互相指向形成鏈式 canonical,也不要把有效頁面 canonical 到無關頁面。
  7. 复查日誌:按路径去重統計變体請求,观察變体是否仍被爬取、301 落点是否稳定、規范 URL 的抓取占比是否變化。

容易忽略的服務器细节

在 Nginx、Apache 或 CDN 重寫中,路径匹配可能預設不区分大小寫,規則寫的是小寫路径,實际請求大寫时也會命中,结果重定向目标仍是同一個變体,看起来跳了但没收敛。另一種情况是邊缘节点做了一次跳轉,源站又做了一次跳轉,最终指向第三個地址。核對时可以把同一變体從多個網絡环境請求一次,记錄每一跳的狀態碼與 Location,確認终点唯一且稳定。

收尾检查

  • 随机抽取若干頁面,分別請求大小寫、加斜杠、預設文档、顯式端口形式,確認都 301 到唯一規范地址。
  • 確認 Sitemap、canonical、内鏈、hreflang 等声明中的 URL 形態一致。
  • 观察一段時間内的抓取日誌,確認變体請求下降,規范地址的抓取趋于稳定。

URL 規范化的目标是让每個内容只有一個可抓取地址。入口收敛後,蜘蛛的發現和抓取可以更多落在真正需要抓取的頁面上,後續的内容更新也更容易被對應到正确的 URL 上。