網站收錄

canonical 寫偏了:收錄归属被自己搅乱的常见情况

canonical 是建议而非指令,寫偏时會直接扰乱收錄归属。本文梳理指向跳轉地址、目标頁不可索引、多标簽冲突、内容並不相同、分頁统一指首頁等常见寫法,並给出一套從頁面是否该收錄、自指核對、目标頁可抓取性到信号一致性的自查顺序。

網站收錄

canonical 寫偏了:收錄归属被自己搅乱的常见情况

站内内容重复时,最常见的處理办法是加 canonical 标簽,告诉搜尋引擎“几個地址里,哪個才是正式版本”。但實际操作中,canonical 常常不是没起作用,而是被寫成了另一種問题:本来自指的頁面被指向別處,或者指向了一個根本不能作為正式版本的地址,结果收錄归属越来越乱。

canonical 只是提示,不是命令

先说一個容易被誤解的前提:canonical 是给搜尋引擎的建议,不是强制指令。系統會结合内鏈、sitemap、重定向、頁面相似度等信息综合判断,如果這些信号相互矛盾,canonical 可能被忽略。所以排查时不要只盯着這一行代碼,要把它和別的信号放在一起看。

几類常见的寫偏方式

  • 指向跳轉地址:canonical 指向的 URL 會 301 到別處。此时應该直接指向最终地址,中間多一层没有意义。
  • 指向不可索引的頁面:目标頁被 robots.txt 屏蔽、带 noindex,或者返回 404、5xx。正式版本自己都進不了索引,合並自然無從谈起。
  • 多個 canonical:模板和 CMS 插件各輸出一份,HTML 里出現两條不同地址。搜尋引擎通常只能選一條,或者直接忽略。
  • 内容並不相同:把两個主题不同的頁面用 canonical 强行合並,属于誤用;canonical 用于高度相似或完全相同的正文,不用于“權重传递”。
  • 相對路径或大小寫、协议不一致:多數情况能被解析,但和實际地址不逐字一致时,容易让判断产生偏差。
  • 分頁頁面全都指向第一頁:這是一種取舍,不是绝對错誤,但會让後續分頁里的内容失去被發現的机會,需要结合业務决定。
  • 靠 JS 動態寫入:如果 canonical 只有脚本执行後才出現,要確認渲染环节能讀到它,否則抓取早期看到的頁面是缺失這個信号的。

按顺序自查一遍

  1. 確認這個頁面本身是否應该被收錄。如果内容單薄、只是聚合入口或临时頁面,该做的是 noindex 或收敛入口,而不是加 canonical。
  2. 检查 canonical 是否為自指(預設情况應当自指),且與實际地址逐字一致,包括协议和大小寫。
  3. 打開 canonical 指向的地址,確認返回 200、没有 noindex、没有被 robots.txt 屏蔽,並且能被正常抓取。
  4. 核對该地址是否出現在 sitemap 中、是否在站内有正常入口、内鏈是否也指向它。信号一致时,判断成本最低。
  5. 處理完观察一段時間,用站内搜尋或 URL 检查工具看归属是否收敛,不要当天改当天就下结论。

別把 canonical 和另外两件事混在一起

一是抓取與收錄的区別:canonical 影响的是“收錄哪一個”,前提是相關 URL 已经被抓取。目标頁長期抓不到,合並效果就無從体現。二是重复内容與收錄取舍的区別:重复内容不等于惩罚,很多情况下搜尋引擎會自行選擇版本,canonical 只是降低它選错的概率。

一句提醒:canonical、noindex、robots.txt、重定向是四件互相獨立的事,用错组合时,经常出現“以為屏蔽了却還在收錄”或“以為合並了却两個都在”的情况。

如果站内确實存在大量參數頁、篩選頁,與其逐頁纠 canonical,不如先從入口和連結结构上减少低價值 URL 的产生,再處理剩下的部分,成本會低很多。