同一個頁面被搜尋蜘蛛用三四個不同地址訪問,是很多站点在 URL 發現阶段最常见的损耗。發現队列和抓取配額都是有限的,重复地址占掉的位置,本来可以留给真正的新内容。這不是抓取能力的問题,而是地址管理的問题。
重复地址通常從哪来
- 协议與主机名變体:http 與 https、带 www 與不带 www 同时可以正常訪問。
- 路径寫法差异:结尾斜杠有無、大小寫混用、重复斜杠、URL 编碼方式不同。
- 參數衍生:排序、篩選、分頁,以及 utm、from、ref 之類的追踪參數。
- 功能頁面:打印頁、獨立的移動版路径、把會话 ID 拼在地址里。
- 内容相同但入口不同:聚合頁、标簽頁、站内搜尋结果生成的列表頁。
這些地址往往都能返回 200,看上去都“正常”,所以平时不容易被注意到,只有在看日誌或做覆盖检查时才會集中暴露。
重复地址带来的實际代價
第一是發現机會被摊薄。搜尋蜘蛛按地址排队,一個内容占了多條记錄,其他新地址進入队列的時間自然往後推。第二是日誌判断變难,同一個頁面出現多條訪問记錄,很难说清究竟覆盖了多少實际内容。第三是站内信号被分散,内鏈、外鏈指向不同版本,等于把同一份支持拆成几份。第四是後續改版时不容易確認哪個版本是正本,容易在迁移中放大問题。
收敛的几種做法
1. 首選版本只保留一個
协议、主机名、尾斜杠這几類規則,最好在服務器或反向代理层统一,用 301 跳到唯一版本。要避免两套地址都返回 200,那等于預設告诉搜尋蜘蛛“這两個都算數”。
2. 用 canonical 声明正本
canonical 是提示而不是强制指令,但仍值得認真寫:必须指向可訪問的最终地址,不要指向會跳轉的中間地址,也不要指向 404。同一批頁面里,canonical 的寫法要一致。
3. 參數按用途分流
追踪類參數基本没有獨立内容價值,可以在服務端忽略,或者跳轉到無參數版本。篩選、排序類參數如果确實對應不同的内容集合,再考虑保留;如果只是同一批内容的重新排列,通常會带来大量低價值地址。
4. 内鏈與 Sitemap 只寫正本
站内連結、面包屑、XML Sitemap、RSS,這些入口應当统一指向同一個版本。入口不统一,前面的跳轉和 canonical 很容易被反复绕開。
一份可执行的检查清單
- 挑 20 個有代表性的頁面,逐個看它們各自有多少個可訪問地址。
- 確認 http 到 https、www 到非 www 是否只有一條跳轉鏈,而不是连环跳。
- 检查尾斜杠規則是否在服務器层统一,大小寫是否被当作同一地址。
- 把追踪參數整理成忽略或跳轉規則,並確認生效。
- 核對 canonical、Sitemap、内鏈三處指向是否一致。
- 隔一段時間回看日誌中 3xx、4xx 與重复路径的比例變化。
驗證與長期维護
收敛之後不要期待立刻發生變化。搜尋蜘蛛需要重新抓取舊地址,才能看到跳轉或 canonical,這個過程通常以周計。更稳妥的做法是把它当成日常习惯:新增一個栏目或功能之前,先决定它的規范地址形態,包括协议、主机名、路径寫法和參數策略,再動手上线。已经存在的變体則按優先級逐個處理,先動被内鏈和外鏈引用最多的那些。
規范化解决的是“同一個内容別占多個位置”,而不是“让搜尋蜘蛛少来”。正本地址本身仍要保證可訪問、响應稳定,否則收敛只會把問题藏起来。