很多站点在排查收錄时,第一反應是去改 canonical。但從實际效果看,canonical 更接近一個“倾向性表達”,而不是一個開關按钮。它告诉搜尋引擎:這些地址里,我認為哪一個才是規范版本。至于最後索引里留下哪個,還要看内鏈、sitemap、重定向、内容重合度這些信号是否一致。
canonical 是提示,不是指令
搜尋引擎處理多個相似 URL 时,會综合判断哪一個是主版本。canonical 是權重較高的信号之一,但不是唯一。当頁面上的 canonical 與内鏈、sitemap、重定向互相矛盾时,最终结果往往不是你寫在标簽里的那一個。所以看到“已经加了 canonical 但還是收錄错了”,通常不是标簽没生效,而是周围的信号在往相反方向拉。
三種常见寫法,结果差別很大
自引用 canonical
每個頁面都指向自己的規范地址。這是最省事也最稳妥的一種配置,主要用来處理參數、大小寫、追踪連結带来的變体問题。它不改變頁面的收錄归属,只是帮搜尋引擎排除噪音。
指向站内的主版本
比如篩選參數頁、排序頁指向不含參數的列表頁;同一内容的分頁或预览地址指向正式地址。這種用法适合内容高度重叠、只需要保留一個入口的场景。前提是主版本本身必须可抓取、可索引,並且内鏈和 sitemap 都指向它。
跨域或指向不相關頁面
這是問题最集中的一類。常见操作包括:模板里把全站頁面都指向首頁;把已经不打算索引的頁面当作 canonical 目标;内容明顯不同的两個頁面硬性互相指向。一旦目标頁自身不可索引,很可能两邊都進不了索引,白损失一個入口。
自查时優先看的几類错誤
- canonical 指向的 URL 返回 404、410 或長期 503
- canonical 指向了被 robots.txt 屏蔽或带 meta noindex 的頁面
- 頁面既有重定向,又有與之冲突的 canonical,形成信号打架
- 模板寫死一個地址,所有頁面都指向同一個 URL
- canonical 與 sitemap、内鏈里的寫法不一致,比如大小寫、结尾斜杠、參數保留與否
一套可执行的自查顺序
- 打開頁面源碼,確認 canonical 是绝對地址,协议、域名、结尾斜杠與站内其他信号保持一致。
- 確認目标 URL 能正常返回 200,且自身没有被屏蔽、没有 noindex。
- 對比 sitemap、内鏈、多語言标注里用的是不是同一套 URL 寫法。
- 到索引报表里观察:想保留的 URL 是否還在索引里,想收敛的是否逐步登出。
- 给足观察時間。canonical 需要等頁面被重新抓取後才可能体現,不會当天生效。
哪些情况不适合用 canonical
如果两批内容确實服務不同人群、主题也不相同,就不要用 canonical 硬合並,那等于主動放弃其中一個入口。需要明确搬家时用 301,需要明确“不要索引”时用 noindex。canonical 的合理用途,是表達“這几個地址其實是同一份内容”。
提示信号只有彼此一致才有意义。当 canonical、内鏈、sitemap 和重定向各说各话时,被采纳的往往是搜尋引擎認為更可信的那一個,而不是你最想要的那一個。
收錄是结果,不是開關。與其反复調整單個标簽,不如先把 URL 寫法统一、把内容邊界划清、把站内指向理顺。這几件事做到位之後,canonical 才可能按你的预期發挥作用。