在蜘蛛池入口頁里放連結时,同一個目标頁经常被寫成好几種形式:一會儿是 www 開头,一會儿不带 www;一會儿 http,一會儿 https;有的末尾带斜杠,有的不带。有人觉得這样多寫几遍,搜尋蜘蛛發現的概率更大。實际情况更可能是,它把這些寫法当成不同的 URL 分別處理。
搜尋蜘蛛在發現阶段是按字符串比對 URL 的
搜尋蜘蛛拿到一條連結後,第一步不是判断頁面内容是否相同,而是把 URL 当作字符串来處理。只要字符串不同,它在去重环节里就大概率認成两個地址。域名前缀、协议、结尾斜杠這些差异,都發生在字符串這一层,所以很容易触發重复抓取。
哪些寫法差异會被当成不同 URL
- www 與非 www:example.com 和 www.example.com 是两個主机名,通常各自獨立處理。
- 协议不同:http 與 https 是两套地址,即使頁面内容完全一样。
- 结尾斜杠:/page 和 /page/ 在很多服務器上指向同一份内容,但對蜘蛛来说是两個字符串。
- 大小寫:/Page 和 /page 在部分服務器上不等價,蜘蛛無法预先判断。
- 預設端口:带上 :80 或 :443 之後字符串變了,是否合並取决于具体處理方式。
- 查询參數:參數顺序不同、多一個統計參數,都會形成新的 URL。
這些差异里,真正指向同一份内容的往往占大多數,但蜘蛛不會主動帮你合並,除非站点這邊给出了明确信号。
带 # 锚点和带參數的連結怎么處理
URL 里 # 後面的片段不會發送给服務器,蜘蛛訪問时通常還是請求同一個地址,所以一般不會因為锚点不同而額外抓一份。查询參數則相反,參數不同就是不同的請求地址,蜘蛛需要實际訪問才能知道返回内容是否一样。如果參數只是做統計用途,最好在服務器端或站長工具里說明,別让它們無限生成新地址。
重复 URL 带来的實际問题
- 抓取预算被摊薄:同一個頁面被拆成两三個地址抓,真正需要更新的頁面可能排到後面。
- 資料分散:抓取日誌和收錄統計里,同一個頁面對應多條记錄,排查問题更費劲。
- 信号冲突:如果两種寫法上的 canonical、内鏈、外鏈指向不一致,蜘蛛判断主地址會更慢。
把寫法统一起来的具体做法
- 先确定主形式:在 www 與不带 www、http 與 https 之間選定一種,作為唯一對外地址。
- 把另一種形式做 301 跳轉到主形式,並让跳轉直接到達最终地址,不要多次中轉。
- 入口頁里的連結统一寫成主形式,不要混用。
- 在主形式上放置 canonical 标簽並指向自己;舊形式頁面也指向主形式。
- sitemap 只提交主形式的地址,避免两套地址同时出現。
- 過一段時間用抓取日誌核對,看是否還有大量舊形式被訪問。
统一 URL 寫法不會直接带来收錄或排名,它的作用主要是减少無效抓取、让日誌和統計更干净。
什么情况下确實需要保留不同寫法
如果目标站本身按地区、語言或业務拆成了不同子域名,或者 www 與主域分別承载不同内容,那就不是重复問题,而是两個獨立站点,各自需要獨立的規范設定。這種情况下不要强行合並,先把两邊的内容定位分清楚。
回到最初的問题:入口頁里同一個目标 URL 寫成两種域名形式,搜尋蜘蛛大概率會当成两個地址抓。與其在入口頁里堆不同寫法,不如把地址規范统一,把有限的抓取机會留给真正需要被發現的頁面。