canonical 标簽的作用很直接:告诉搜尋引擎,這一组相似頁面里,哪個地址才是你希望被当作規范版本的那個。它不负责提升排名,也不保證被收錄,但寫對了能减少重复 URL 的出現,让站内入口更集中。寫错了,反而可能把爬虫引到不存在的地址,或者让同一篇内容被拆成好几個版本。
先確認哪些頁面需要 canonical
不是每個頁面都必须加 canonical,但以下几類頁面值得優先检查:
- 同一篇内容有多個訪問地址,比如带和不带參數、带和不带 www、带和不带末尾斜杠。
- 列表頁的篩選、排序、分頁參數,生成大量内容相近的 URL。
- 内容聚合頁、标簽頁、专题頁,與正文頁存在部分重叠。
- 多域名或子域名指向同一套内容,例如主站與镜像站、m 站與 PC 站。
- 文章被其他站点轉载或同步,站内也出現了不同路径的副本。
常见错誤:canonical 寫反、寫多、寫空
1. 指向了不相關或打不開的地址
有些 canonical 是從模板里複製来的,结果每個頁面都指向首頁,或者指向一個已经下线的 URL。爬虫遇到這種情况,會降低對标簽的信任,甚至不再把它当作規范提示。检查时可以直接打開 canonical 里的地址,確認狀態碼是 200,内容與目前頁确實属于同一主题。
2. 一個頁面出現多個 canonical
模板和插件各輸出一次,就會出現多個 rel="canonical"。搜尋引擎通常只會取其中一個,也可能全部忽略。用浏览器查看源代碼,搜尋 canonical,確認每個頁面只出現一次,並且指向的地址是绝對 URL。
3. 分頁與 canonical 的冲突
列表頁的分頁最好自引用,也就是第 2 頁的 canonical 指向第 2 頁本身,而不是全部指回第 1 頁。全部指回第 1 頁會让後續分頁很难被發現,相当于把後面几頁從 URL 發現鏈路里摘了出去。如果确實不希望分頁被單獨處理,也要结合站内連結和站点地图一起判断,而不是只靠 canonical 一刀切。
4. 與内鏈、站点地图不一致
canonical 说 A 是規范地址,但站内連結和站点地图都在指向 B,爬虫會更倾向相信實际連結。自查时要保證三處指向同一個地址:canonical、站内主要内鏈、站点地图。至少不要让它們互相矛盾。
一份可执行的自查清單
- 随机抽取栏目頁、正文頁、标簽頁、搜尋结果頁各若干,查看源代碼中的 canonical。
- 確認每個 canonical 都是绝對 URL,且能正常打開。
- 確認没有多個 canonical 同时輸出。
- 確認分頁、篩選參數頁的 canonical 策略符合预期,没有把有效入口全部指回第一頁。
- 對比内鏈和站点地图中的地址,看是否與 canonical 一致。
- 检查多域名、多协议、多大小寫版本,是否有统一跳轉或统一 canonical。
- 观察抓取日誌里這些地址的訪問情况,看重复 URL 是否在减少。
如何驗證和跟進
驗證 canonical 不需要复杂工具。用浏览器的“查看源代碼”就能看到标簽,用抓取工具批量抓一遍站内主要頁面,也能快速發現多個 canonical 或指向错誤。再结合服務器日誌,观察同一篇内容的多個 URL 是否還在被反复抓取。如果某個參數组合已经被 canonical 指向規范地址,但日誌里仍然大量出現,就要回头检查内鏈或站点地图是否還在輸出這些地址。
canonical 不是萬能開關。它只是告诉爬虫你的偏好,真正决定 URL 發現和抓取路径的,仍然是站内連結、站点地图和服務器返回的狀態碼。
站点运营里,這類小标簽很容易被忽略,但它影响的是爬虫如何理解你的 URL 结构。把 canonical 当成一次常規自查項,和 sitemap、内鏈、重定向一起看,比單獨改一個标簽更有效。