搜尋抓取

搜尋蜘蛛URL發現:大小寫、结尾斜杠與编碼差异造成的重复入口归一

同一個頁面常能以多種 URL 形式被訪問,大小寫、结尾斜杠、預設文件、协议與參數顺序的差异,會让搜尋蜘蛛把它們当成不同入口分別抓取。本文梳理重复入口的常见形態、排查顺序與收敛做法,把抓取集中到規范地址上。

搜尋抓取

搜尋蜘蛛URL發現:大小寫、结尾斜杠與编碼差异造成的重复入口归一

同一份内容,在服務器和 CDN 上往往不止一個可訪問地址。大小寫、结尾有没有斜杠、带不带 www、有没有多余的查询參數,這些差异在浏览器里看起来没区別,但對搜尋蜘蛛来说就是不同的 URL。它們會各自進入待抓取队列,各自占用抓取预算,也让日誌和报表难以對應到真實頁面。

重复入口的常见形態

下面几種形式在站点里出現频率最高,可以照着逐項核對:

  • 大小寫差异:/About、/about、/ABOUT 在大小寫敏感的服務器上會返回不同结果。
  • 结尾斜杠:/news 與 /news/ 同时可訪問,且都返回 200。
  • 預設文件與目錄:/index.html、/index.php 與根路径並存。
  • 主机名與协议:example.com、www.example.com、http 與 https 之間的混用。
  • 追踪參數:分享連結带上的 utm 參數、會话參數被蜘蛛抓到並保留。
  • 编碼與參數顺序:同一路径的编碼寫法不同,或 ?a=1&b=2 與 ?b=2&a=1 被视為两個地址。

為什么值得专门處理

重复入口本身不會让頁面消失,但會带来几個连鎖問题。抓取预算被同一内容反复消耗,真正需要更新的頁面排在後面;内鏈權重被拆散到多個地址上;日誌里同一頁面出現多行,难以判断抓取频次是否正常;Sitemap 提交的是 A,内鏈指向的是 B,蜘蛛收到的信号相互矛盾。

排查顺序

  1. 按訪問日誌把同一内容的多種路径形式分到一起,統計各自被蜘蛛請求的次數。
  2. 抽样請求每種變体,確認返回碼與最终落地地址,注意是否出現鏈式跳轉。
  3. 回到模板层,检查導航、面包屑、分頁组件和分享按钮生成連結的規則是否统一。
  4. 對照 Sitemap 與站内實际可訪問地址,找出只在其中一個地方出現的版本。

收敛做法

目标只有一個:让同一内容對外只暴露一個規范地址。具体可以這样做:

  • 在服務器或 CDN 层用 301 把非規范形式跳到規范形式,一次到位,不要多級跳轉。
  • 頁面 head 中的規范連結指向最终地址,與 301 目标保持一致。
  • 内鏈生成規則统一,模板里不要一處带斜杠、一處不带。
  • Sitemap 只收錄規范地址,避免把跳轉前地址也寫進去。
  • 保留一份人工维護的站点地图頁作為發現鏈路的兜底,但連結同样使用規范形式。

服務器與配置上的注意点

  • Linux 环境区分大小寫,错誤的大小寫會變成 404,而不是自動跳到正确頁面。
  • 參數處理要有明确策略:無關參數直接重寫或忽略,不要原样返回頁面。
  • CDN 的重定向與缓存規則需要和源站一致,否則同一地址在不同节点表現不同。
  • 改完規則後抽查几個节点,確認返回碼、Location 與最终頁面都對得上。

维護节奏

新增頁面模板、站点改版、接入新 CDN 這几類變更最容易引入新的重复入口。建议把它們纳入上线检查項:上线後看一天日誌里是否出現同一路径的多種寫法,出現就尽快收敛。已经存在的舊地址不必全部刪除,用 301 長期承接即可,但不要再让它們出現在内鏈和 Sitemap 中。

URL 归一不是一次性任務。規則定下来之後,真正起作用的是每次改版都有人回头看一眼日誌里的入口形式有没有變多。

把發現路径收拢到少數几個規范地址上,抓取效率、日誌可讀性和内鏈信号都會稳定一些。這件事不复杂,但需要持續维護。