做蜘蛛池入口頁时,很容易遇到一種情况:同一條目标地址,在頁面里被寫成了好几種样子——有的带 www,有的不带;有的寫 http,有的寫 https;末尾有的带斜杠,有的不带。這时一個很實际的問题就来了:搜尋蜘蛛會把這些当成同一個頁面,還是当成好几個不同的 URL?
多數情况下會被当成不同 URL
URL 本身是字符串,协议、主机名、端口、路径、查询串只要有一位不同,在抓取层面就是两個地址。搜尋引擎後續會通過規范化把明顯相同的地址合並,但那是它自己的判断過程,不代表你寫的时候可以随便寫。
換句话说:你寫十種寫法,搜尋蜘蛛可能先去重,也可能不先去重。在你無法控制它判断逻辑的情况下,把入口頁里的寫法统一,是成本最低的做法。
哪些差异最容易被当成两個地址
- 协议:http 與 https 通常會被搜尋引擎视作两個地址,服務端做 301 後才合並。
- www 前缀:带與不带是两個主机名,属于不同地址。
- 大小寫:路径部分大小寫敏感,多數服務器上會被视為两個资源;主机名部分不敏感。
- 末尾斜杠:有斜杠與没斜杠在很多服務器上返回不同内容,或返回一次 301。
- 預設端口:端口寫與不寫理论上是同一地址,但在日誌與統計里會呈現為不同字符串。
- 查询參數:顺序不同、有無跟踪參數,都會被记錄成不同 URL。
入口頁该统一成哪種寫法
没有放之四海皆准的答案,原則是和你目标站最终對外呈現的地址保持一致。做法上:
- 先确定目标站的主域形態,看它是否带 www、是否全站 https。可以打開目标站首頁,观察它最终停在哪一個地址上。
- 入口頁里的連結按這個形態书寫,协议、主机名、末尾斜杠尽量保持一致。
- 歷史上已经寫了別的形態,不必全部推倒重来,但新加連結时按统一規則来。
- 如果入口頁确實無法保證唯一寫法,至少在目标站侧做好 301 與 canonical,让搜尋引擎有机會合並。
入口頁自身也要注意
入口頁可能被多個域名指向,或者自身存在多個可訪問地址。如果你希望搜尋蜘蛛把某個地址当作入口頁的正式地址,入口頁本身也應该有一個稳定、唯一的 URL。否則搜尋蜘蛛每次抓到的入口頁地址不同,跟進行為也會變得零散。
统一寫法不保證收錄,也不保證抓取量提升。它只是减少搜尋引擎重复判断、降低抓取成本的一種整理工作。
怎么自查有没有寫乱
- 把入口頁里的連結導出成一份列表,按主机名和路径去重,看同一目标出現了几種寫法。
- 對照服務器訪問日誌,看搜尋蜘蛛請求的地址形態是否和入口頁里的寫法一致。
- 随机抽查几條目标 URL,直接訪問看最终落地地址是什么,再回到入口頁對比。
如果自查後發現同一目标有三四種寫法,優先處理出現次數最多的那几條,不必一次改完。整理 URL 寫法本身不产生内容價值,但能减少後續排查抓取和收錄問题时的干扰。