蜘蛛在决定抓不抓一個頁面之前,第一步是确定“這是哪個地址”。URL 對蜘蛛来说不只是路径,它同时承担三個角色:頁面的唯一标识、站点层級里的位置信息,以及是否值得抓取的初步信号。一個入口頁如果 URL 结构混乱,很可能在内容還没被讀到之前,就已经被判定為重复或低優先。
一、先解决唯一性:同一個頁面只應有一個地址
同一份内容如果存在多個可訪問地址,蜘蛛會分別抓取、分別存储,權重被摊薄,頁面之間還可能互相竞争。常见的重复来源有:
- 大小寫混用:/PageA 和 /pagea 在多數服務器上是两個不同地址。
- 结尾斜杠:/list 與 /list/ 是否等價,取决于服務端配置和重寫規則。
- 預設首頁:/index.html、/index.php、/ 三者同时可訪問。
- 跟踪參數:?utm_source=...、?from=... 這類參數會生成大量變体。
- 參數顺序:?a=1&b=2 與 ?b=2&a=1 是否算同一頁。
處理思路通常是固定一種寫法,其余用 301 指過去,並且站内連結统一使用規范地址,而不是一個頁面里混着两種寫法。
二、參數不是不能用,是要少而稳定
動態 URL 本身不會導致不被抓取,但參數越多、取值越不可预测,蜘蛛能走完的路径就越少。入口頁的 URL 建议控制在一到两個參數以内,參數名固定、取值有明确邊界,比如分類 id、頁碼。排序方式、样式切換、會话追踪這類參數,尽量不要出現在入口頁的内鏈里。
如果站点用了伪静態,要留意重寫規則別制造出“看起来是静態、實际能無限展開”的地址,例如 /tag/a、/tag/a/a、/tag/a/a/a 這種层层叠加的组合。
三、层級深度决定蜘蛛能走多遠
蜘蛛對一個入口頁的抓取预算和耐心都是有限的。從入口頁到目标頁之間隔了几跳,直接影响目标頁被發現的概率。一般可以參考:
- 重要頁面尽量控制在三到四跳以内。
- 目錄名用有意义的英文或拼音,避免 /c/1/、/a/b/c 這類無信息路径。
- 每一层都要有可讀的列表頁或聚合頁,让蜘蛛有台阶可踩。
- 面包屑和上一級連結要真實可点,不要只寫在结构化資料里。
锚文本最好和路径语义一致。满屏“点击這里”的連結,蜘蛛只能靠 URL 去猜内容,判断效率會明顯下降。
四、可以固定检查的几項
- 站点是否只保留一個規范域名,http/https、www/非 www 是否只留一個入口。
- 列表頁翻頁是否有明确上限,末頁之後是否還存在空頁或重复内容。
- 随机抽几個入口頁,看内鏈里有没有带參數、斜杠寫法不一致的地址。
- 日誌里出現频次異常高的 URL 變体,往往就是需要收敛的地方。
把 URL 结构做干净,是為了让蜘蛛少做無效判断,而不是保證某個结果。它解决的是“能不能被顺利發現和区分”,剩下的仍然取决于内容本身。