站点运营

站点运营:canonical 自查,把規范地址指對地方

canonical 寫起来只有一行,却直接影响頁面以哪個地址被收錄。本文梳理几種常见的寫错方式,比如全站寫死同一個地址、指向已失效地址、與 noindex 冲突、分頁頁面全部指向第一頁等,並给出一份可顺序执行的自查清單,以及改完之後该怎么观察驗證,供日常维護和改版时參照。

站点运营

站点运营:canonical 自查,把規范地址指對地方

做站点运营,canonical 是一個寫起来只有一行、但影响面不小的标簽。它本质上是在說明:這一组内容相近的地址里,站点認可哪一個是主版本。寫對了,可以避免多個地址互相争夺同一個頁面的展示机會;寫错了,可能把本来正常的頁面直接合並掉。

canonical 解决的是什么問题

同一個頁面,往往會有多個可達地址。带 www 和不带 www、带结尾斜杠和不带、加上跟踪參數、大小寫不同、打印頁版本、分頁後的第一頁……這些地址打開的可能是同一份内容。如果不给提示,搜尋引擎需要自己判断哪一個是主版本,過程里既有不确定性,也占用抓取资源。canonical 就是把這份判断明确下来。

常见的几種寫错方式

  • 全站寫死同一個地址。模板里硬编碼了首頁地址,结果所有頁面都在声明主版本是首頁,這等于主動要求別人只認首頁。
  • 指向已经 404 或重定向的地址。規范地址本身必须可訪問,指向一個失效地址,信号就断了。
  • 相對路径寫错层級。用相對路径不算错,但在多层目錄、带參數或做過 URL 重寫的站点里,容易解析成意料之外的地址,改成绝對地址更稳妥。
  • 與 noindex 同时出現。一個頁面既说別收錄我,又说主版本是我,两個信号互相矛盾,最终處理结果往往不是运营想要的那個。
  • 分頁頁面全部指向第一頁。列表第一頁和第三頁内容並不相同,把後几頁都規范到第一頁,等于放弃了這些頁面上的條目入口。
  • 多語言版本互相指定。不同語言版本是各自獨立的頁面,不属于重复内容,應该用 hreflang 處理,而不是 canonical。

自查可以按這個顺序走

  1. 随机抽取 20 到 30 個不同類型的頁面:首頁、栏目頁、詳情頁、列表分頁、带參數的篩選頁,逐個查看源碼里的 canonical。
  2. 把抽取到的規范地址在浏览器里打開,確認返回 200,並且内容與目前頁面一致。
  3. 確認規范地址是绝對地址,协议、域名、路径與站点目前主域名完全一致,不要混用 http 與 https。
  4. 检查是否存在自我引用:獨立的正常頁面,canonical 應该指向自己。這是最简單、也最容易被模板改坏的检查項。
  5. 把 canonical 指向的地址與站点地图、内鏈里使用的地址對照一遍,尽量全站统一成同一種寫法。
  6. 整理一份例外清單:分頁頁、篩選頁、打印頁、多語言頁分別怎么處理,寫進模板規范,避免每次改版重新讨论。
如果暂时拿不准某個頁面的規范地址该怎么定,宁可先让它自我引用,也不要把一批頁面统一指向一個不相關的地址。缺少提示只是让搜尋引擎自己判断,指向错誤則是明确的誤導。

和其他信号配合着看

canonical 不是孤立的。重定向负责把舊地址永久送到新地址,canonical 用于内容相同但地址並存的场景,站点地图提交的是希望被收錄的地址,内鏈决定蜘蛛實际走哪條路径。這几處如果各自指向不同的寫法,搜尋引擎只能按自己的理解取舍,结果通常和运营预期有差距。

改完怎么驗證

調整之後不要只看当天。可以观察抓取日誌里規范地址與被規范地址的抓取频次變化,观察搜尋结果中展示的地址是否逐步收敛到指定的版本。這個過程通常以周為單位,期間尽量不要再反复改動,否則等于不断给出新信号,前後都無法评估效果。

最後提醒一点:canonical 是建议,不是命令。它有用,但前提是頁面本身内容清晰、地址可訪問、站点结构没有更嚴重的矛盾。把這几件事做顺,canonical 才能真正起到它该起的作用。