canonical 不是命令,而是提示
canonical 标簽的作用,是告诉搜尋引擎:這一组相似或相同内容的頁面里,哪個 URL 是你更希望被当作主版本的。它不保證搜尋引擎一定采纳,也不等于 301 跳轉。很多收錄問题,不是 canonical 没寫,而是寫错了方向。
常见誤用一:全站 canonical 指向首頁
有些站点為了“集中權重”,在模板里把 canonical 统一寫成首頁地址。结果是每個頁面都在声明自己不是主版本。蜘蛛抓取這些頁面後,收到的信号是:它們都指向首頁。该被收錄的产品頁、文章頁可能因此迟迟不進索引,或者即使進了,也容易在後續更新中被替換掉。
除非頁面确實與首頁高度重复,否則每個 URL 的 canonical 預設應该指向自己。
常见誤用二:canonical 指向 404 或不存在的 URL
頁面 A 的 canonical 寫成了頁面 B,但頁面 B 已经刪除、改版或從未上线。搜尋引擎抓取 A 时看到這個指向,會尝试確認 B 的狀態。如果 B 返回 404,這個 canonical 信号大概率會被忽略。更麻烦的是,如果 B 後来又變成別的頁面,A 的收錄狀態可能跟着波動。
改版时尤其容易出這種問题:模板里的 canonical 還是舊域名或舊路径。
常见誤用三:分頁頁面全部 canonical 到第一頁
列表頁分頁时,把第 2、3、4 頁的 canonical 都指向第 1 頁,是一種常见做法。它适合内容高度重复、後續頁只是翻頁的情况。但如果後續頁有獨立的内容價值,比如不同批次的商品、不同時間段的文章,一律指向第一頁,可能會让這些頁面失去進入索引的机會。
更稳妥的方式是:分頁頁面 canonical 指向自己,同时给第一頁一個清晰的入口;如果确實想收敛,再考虑用 noindex 或調整内鏈。具体選哪種,取决于這些頁面是否值得被搜尋到。
常见誤用四:canonical 與 301 混着用
301 是服務器层面的跳轉,用戶和蜘蛛都會被带到新地址。canonical 是頁面里的提示,蜘蛛仍然可以抓取原 URL。两者可以配合,但不能互相替代。如果舊頁面已经确定不再使用,優先做 301;如果只是參數、排序、打印版等相似頁面,用 canonical 更合适。
怎么检查 canonical 是否被采纳
- 查看頁面源代碼,確認 canonical 的地址是否正确、是否指向自己或目标頁。
- 用 URL 检查工具看“用戶声明的規范網址”和“搜尋引擎選擇的規范網址”是否一致。
- 在抓取日誌里观察:搜尋引擎是否還在频繁抓取那些本應被收敛的 URL。
- 用 site: 查询或索引狀態检查,看目标頁面是否進入索引,非目标頁面是否逐渐减少。
如果两者長期不一致,說明搜尋引擎有別的判断依據,比如内鏈、站点地图、重定向或内容相似度。
處理顺序:先確認問题,再改标簽
- 先找出重复或相似的 URL 组,確認哪一個是主版本。
- 检查主版本是否可正常訪問、内容是否完整、是否有内鏈指向。
- 把非主版本的 canonical 指向主版本;主版本 canonical 指向自己。
- 如果整组頁面都不需要被搜尋到,考虑 noindex 或 robots.txt,但要注意两者作用范围不同。
- 改完後观察一段時間,不要频繁来回修改。
canonical 只是众多收錄信号之一。它用對了可以减少重复 URL 的干扰,用错了也可能让頁面在索引里進進出出。比起反复調整标簽,先理清哪些 URL 真正值得被收錄,往往更重要。