同一篇内容在站内出現多個 URL,是收錄不稳定的常见原因。參數、排序、篩選、打印版、大小寫、末尾斜杠、协议和主机名,都可能让一個頁面變成多個地址。對爬虫来说,每個 URL 都是獨立入口,需要先抓取,才能判断内容是否重复。
先分清抓取和收錄
抓取是搜尋引擎訪問頁面並讀取内容,收錄是它决定把某個 URL 放進索引。一個頁面被抓取,不代表它會被收錄;多個 URL 内容相同,也不代表每個都會進索引。常见狀態是:變体 URL 被“已抓取,未编入索引”,或者索引里只保留了一個代表 URL。所以處理重复 URL,目标不是让每個地址都被收錄,而是让该留下的那個稳定下来。
多個 URL 通常從哪来
- 跟踪參數、推荐參數、會话 ID,让同一頁面产生大量地址。
- 排序、篩選、视图切換等交互,生成可被抓取的 URL。
- 打印版、AMP 版、移動版與桌面版分開部署。
- http 與 https、www 與非 www、末尾带不带斜杠、路径大小寫不统一。
- 站内連結、sitemap、分享按钮各自指向不同版本。
這些變体越多,抓取预算被消耗得越快,真正需要收錄的頁面反而可能被拖慢。
搜尋引擎怎么選代表 URL
canonical 是一個提示,不是强制指令。搜尋引擎會综合看内鏈指向、sitemap 里放的是哪個地址、外鏈落在哪、重定向關系、内容一致程度和歷史表現。也就是说,頁面里寫了 canonical,但站内連結仍然大量指向另一個地址,代表 URL 仍可能不是你想要的那個。
想让某個 URL 被選為代表,先让站内信号统一指向它,再谈 canonical 和 sitemap。
按影响面處理,顺序可以參考
- 先确定希望被收錄的目标 URL。它應当返回 200,内容完整,不需要登入或特殊操作就能訪問。
- 把導航、面包屑、正文内鏈、sitemap、分享按钮统一指向目标 URL,减少變体入口。
- 對不打算收錄的變体,優先用 301 永久重定向;參數類無法重定向时,再用 canonical 指向目标版本。
- sitemap 只放目标 URL,不要把同一内容的多個版本混在一起提交。
- 观察一轮抓取周期,看索引里保留的是哪個地址,不要每天改一次規則。
常见變体的處理建议
參數與排序篩選
能改成静態路径的,優先改。不能改的,让無參數版本可正常訪問,並在變体上 canonical 到该版本。不要用 robots.txt 直接屏蔽目标頁,以免连正常抓取也挡掉。
打印版、AMP 與移動版
打印版通常没有獨立價值,可以 noindex 或 canonical 到正文。移動版如果和桌面版分開部署,要確認两端對應關系正确,避免把收錄分散到两個地址。
大小寫、斜杠、协议與主机名
這些應在服務器层面用 301 统一到唯一形式,而不是靠頁面里的 canonical 兜底。規范形式确定後,所有入口都指向它。
分頁
分頁通常不是重复内容,每一頁有自己的内容。一般情况下自 canonical 即可,不要把第二頁之後的頁面全部 canonical 到第一頁,除非那确實是“查看全部”。
收敛之後看什么
重点看索引中的代表 URL 是否稳定、抓取频次是否更集中、目标頁能否進入索引。只盯收錄總量容易誤判,因為變体减少时總量可能下降,但有效頁面反而更清楚。如果目标頁仍不被選,回头看内鏈是否统一、内容是否存在實质差异。
處理重复 URL 的核心,是让搜尋引擎清楚哪個地址值得留下,而不是把同一份内容反复投喂。收敛完成後给系統一点時間,再根據索引狀態做下一轮調整。