搜尋抓取

同一個頁面多個地址:重复 URL 會让蜘蛛白抓几遍

蜘蛛按 URL 记帳,同一個頁面若能從 http/https、带不带 www、尾斜杠、渠道參數等多個地址打開,抓取次數就會被重复消耗,連結信号也被分散。本文梳理重复地址的常见来源、在抓取日誌與回爬判断上的具体影响,並给出 301、canonical、内鏈與 Sitemap 的處理顺序和自查清單。

搜尋抓取

同一個頁面多個地址:重复 URL 會让蜘蛛白抓几遍

蜘蛛是按 URL 记帳的。對搜尋引擎来说,不同的 URL 就是不同的頁面,哪怕它們返回的内容完全一样。当一個頁面能通過多個地址打開,站点就會在抓取队列、抓取日誌和權重判断上重复记帳:抓取次數被摊薄,主地址的更新信号被稀释,日誌里也很难看清哪些地址才是真正需要维護的。

重复 URL 通常從哪里冒出来

多數站点不是主動制造重复地址,而是若干技術细节叠出来的:

  • 协议和主机名不统一:http 與 https、带 www 與不带 www 都能訪問,且没有做跳轉。
  • 路径收尾不一致:列表頁 /list 和 /list/ 都返回 200。
  • 大小寫混用:服務器区分大小寫时,/About 和 /about 會算成两條地址。
  • 渠道參數:utm、gclid、fbclid、ref 每投一次推廣就生成一批新地址。
  • 篩選與排序參數:sort、order、filter、price_min 组合出大量地址。
  • 會话類參數:sessionid、sid、時間戳、随机數。
  • 功能頁面外泄:打印頁、移動版、短鏈、站内搜尋结果頁被外鏈或分享带出去。

抓取层面的實际影响

  • 抓取次數被重复消耗,新内容分到的抓取机會變少。
  • 日誌噪音變大,看哪些 URL 被抓過时,很难判断主地址的真實表現。
  • 外鏈與内鏈權重分散到多個地址上,單個地址的連結信号被削弱。
  • 回爬判断混乱:同一内容在几個地址上的更新节奏不同,蜘蛛难以確認哪個版本是最新的。
  • 選错主地址:如果站点自己都没明确指向哪個版本,主地址可能不是你以為的那個。

處理顺序:硬信号在前,软信号在後

先做能让地址真正合並的動作,再做只是表態的标注。

  1. 能跳的一律用 301:http 到 https、非 www 到 www、带參數到不带參數,一次性跳到最终地址,避免多跳。
  2. 不能跳的用 canonical:指向自己確認的主地址,且主地址本身要能正常返回 200。
  3. 内鏈统一寫法:站内所有連結都寫成同一個形式,別在導航里用不带斜杠、正文里用带斜杠。
  4. 站点地图只保留主地址:把跳轉地址、參數地址、重复地址從 Sitemap 里清掉。
301 是替代關系,canonical 是建议關系。能跳轉的重复地址,優先用 301 收拢;實在不能跳轉的,再用 canonical 說明。

可以按這個顺序自查

  1. 從抓取日誌里統計带參數的 URL 占比,看看重复地址有没有被大量抓取。
  2. 用几個典型地址測試:換协议、加 www、去掉尾斜杠,看是否都跳到同一個最终地址。
  3. 抽查頁面的 canonical 是否自指,是否指向了實际返回 200 的主地址。
  4. 检查内鏈、Sitemap、RSS 里的地址寫法是否一致。
  5. 清理重复地址後,观察一段時間内日誌中主地址的抓取比例是否上升。

几個容易踩的坑

  • 用 canonical 代替 301。两者强度不同,能跳轉的地址不做跳轉,等于让蜘蛛自己去猜。
  • 用 robots 屏蔽參數地址。規則寫得太宽可能把带參數的主内容頁一起挡掉,连發現都成問题。
  • 把分頁全部 canonical 到第一頁。後續頁面的内容不再被單獨看待,深层連結也失去作用。
  • canonical 指向的主地址本身還會跳轉或返回非 200。指向一個打不開的地址,等于没有表態。
  • 清理时不看日誌,凭感觉删。先確認哪些地址真的被蜘蛛抓過、哪些有外鏈,再决定怎么處理。

重复 URL 不會立刻让站点出問题,但它會持續消耗抓取机會,也让运营者看不清站点的真實抓取情况。把地址寫法收拢到一套規則上,是提升抓取效率里成本較低的一件事。