站点运营

站点运营:canonical 标簽自查,別让同一篇内容互相争入口

canonical 用来說明頁面的規范地址,但寫错、寫多、寫反都會让爬虫和訪客走到不同入口。本文從常见场景出發,整理一份可执行的自查清單,包括自引用、分頁、篩選參數、多域名和内容聚合頁,並說明如何用抓取日誌和工具驗證,减少重复 URL 带来的抓取浪費。

站点运营

站点运营:canonical 标簽自查,別让同一篇内容互相争入口

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、站内主要内鏈、站点地图。至少不要让它們互相矛盾。

一份可执行的自查清單

  1. 随机抽取栏目頁、正文頁、标簽頁、搜尋结果頁各若干,查看源代碼中的 canonical。
  2. 確認每個 canonical 都是绝對 URL,且能正常打開。
  3. 確認没有多個 canonical 同时輸出。
  4. 確認分頁、篩選參數頁的 canonical 策略符合预期,没有把有效入口全部指回第一頁。
  5. 對比内鏈和站点地图中的地址,看是否與 canonical 一致。
  6. 检查多域名、多协议、多大小寫版本,是否有统一跳轉或统一 canonical。
  7. 观察抓取日誌里這些地址的訪問情况,看重复 URL 是否在减少。

如何驗證和跟進

驗證 canonical 不需要复杂工具。用浏览器的“查看源代碼”就能看到标簽,用抓取工具批量抓一遍站内主要頁面,也能快速發現多個 canonical 或指向错誤。再结合服務器日誌,观察同一篇内容的多個 URL 是否還在被反复抓取。如果某個參數组合已经被 canonical 指向規范地址,但日誌里仍然大量出現,就要回头检查内鏈或站点地图是否還在輸出這些地址。

canonical 不是萬能開關。它只是告诉爬虫你的偏好,真正决定 URL 發現和抓取路径的,仍然是站内連結、站点地图和服務器返回的狀態碼。

站点运营里,這類小标簽很容易被忽略,但它影响的是爬虫如何理解你的 URL 结构。把 canonical 当成一次常規自查項,和 sitemap、内鏈、重定向一起看,比單獨改一個标簽更有效。