canonical 标簽大多由模板自動輸出,装好 CMS 之後很少有人再回头看它。平时站点不出問题,但一旦改版、換域名、上线篩選參數,這個标簽就可能把一批頁面指向另一個地址。自查的目的不是追求完美,而是確認每個頁面声明的是不是自己。
第一步:確認 canonical 指向的是目前頁面
判断标准很直接:頁面里的 canonical 地址,應当與浏览器地址栏中那個規范、希望被訪問的地址一致。可以逐項對照:
- 协议:HTTPS 頁面的 canonical 不要寫成 http,否則等于告诉蜘蛛還存在一個明文版本。
- 域名:带 www 與不带 www 只能保留一個,全站统一。
- 路径:结尾斜杠、大小寫、預設首頁寫法要保持一種形式。
- 參數:追踪參數、會话 ID 不應该出現在 canonical 里。
分頁與列表頁最容易出問题
- 分頁:第 2 頁之後的 canonical 指向哪里,全站要一致。有的站点让每頁指向自己,有的统一指向第一頁,两種思路各有取舍,但不要一半指向自己、一半指向第一頁。
- 篩選頁:颜色、價格、排序等參數组合會生成大量地址。要么让這些頁面 canonical 到無參數的栏目頁,要么用 robots 規則限制抓取,注意两種做法不要互相矛盾。
- 标簽與聚合頁:内容單薄时可以考虑指向主栏目,但先確認這些頁面确實没有獨立價值,別顺手把所有聚合頁都指走。
几個高频错誤场景
全站模板寫死一個地址
主题或模板里硬编碼了首頁的 canonical,结果每個頁面都在声明自己是首頁。這類問题通常出現在換主题、改版之後,用浏览器查看源碼就能發現。
詳情頁指向栏目頁
部分程序在文章頁輸出了所属栏目的 canonical,本意是合並權重,實际等于让蜘蛛忽略文章本身的地址。除非确實要做内容合並,否則不要這么做。
移動端與桌面端互指
如果站点有獨立的移動域名,canonical 一般指向桌面版地址,移動版自身不要再指向自己,两套規則同时存在會让判断變乱。
多語言版本用错
語言版本應各自 canonical 到自己,再用 hreflang 互相标注。把英文頁 canonical 到中文頁,等于主動放弃英文頁面的獨立地址。
canonical 是建议而不是指令,蜘蛛會结合頁面内容和其他信号做判断。寫错不等于頁面一定不被收錄,但會让判断變复杂,也會让你排查問题时多绕几圈。
自查怎么落地
- 從栏目頁、文章頁、分頁、篩選頁、移動版各抽几條地址,用浏览器查看源碼里的 canonical。
- 用抓取工具批量跑一遍,導出每個地址與其 canonical 的對照表。
- 筛出 canonical 與自身地址不一致的行,逐條判断是刻意設定還是模板错誤。
- 修改模板或規則後,重新抓取一批地址確認輸出正确。
- 過几周再看服務器日誌和站長平台的抓取資料,確認没有明顯異常波動。
改完之後別急着下结论
canonical 的調整不會立刻反映到抓取和收錄上,通常需要一段時間。期間尽量不要再叠加其他大改動,否則很难判断是哪一步起了作用。如果只是修掉了明顯的模板错誤,保持观察即可,不必因為短期資料波動就来回改回去。
把這項自查放進改版清單里,每次換主题、換域名、上线新栏目时顺手過一遍,比事後猜原因要省事得多。