站点运营

站点运营:canonical 自查,把正本明确指给蜘蛛

canonical 是站点运营里容易被忽略、又容易寫错的一环。本文從正本的選擇、常见错誤寫法、协议层重复地址、分頁與參數頁處理几個角度,给出一份可以逐條执行的自查清單,並說明改動上线後如何通過渲染结果、站点地图與服務器日誌驗證效果。

站点运营

站点运营:canonical 自查,把正本明确指给蜘蛛

canonical 的作用很朴素:当同一份内容存在多個可訪問地址时,告诉搜尋蜘蛛哪一個是你認可的正本。它不解决所有重复内容問题,但能减少蜘蛛在两個版本之間反复来回、把權重分散掉的情况。做站点运营时,canonical 寫错了往往不會立刻报警,而是慢慢表現為收錄版本混乱、栏目頁抢了詳情頁的位置。

先想清楚正本是哪一個

同一篇文章可能通過带參數、带尾斜杠、http 與 https、大小寫不同的域名等路径抵達。多數情况下 self-canonical 最稳妥:每個内容頁把自己指给自己,只有确實需要合並时才指向別的 URL。合並前先確認目标頁是同一份内容,並且返回 200、允许被抓取。

几類常见的寫法問题

  • 全站頁面都指向首頁或某個栏目頁,等于把整站内容声明為副本,蜘蛛會逐渐不再單獨看待這些頁面。
  • canonical 指向 404、301 的跳轉目标或带 noindex 的頁面,信号互相矛盾,蜘蛛只能自己猜。
  • 一個頁面寫了多個 canonical。多個标簽同时存在时,蜘蛛通常只認第一個或直接忽略,结果不可控。
  • 跨域 canonical 指向別人的站点。除非确實存在内容授權關系,否則容易把自己的頁面從索引里挤出去。
  • 由 JavaScript 動態寫入 canonical。渲染前後不一致时,蜘蛛拿到的可能不是你以為的那個地址。

协议层的重复也別放過

上面说的是标簽层面,协议层面同样會产生重复地址:http 與 https 都能打開、带 www 與不带 www 都能訪問、大小寫混用、多余的尾斜杠。這些應该用 301 统一到一個版本,而不是靠 canonical 兜底。canonical 是建议,301 才是明确的迁移信号,两者混用會让蜘蛛更难判断。

一份可执行的自查清單

  1. 抽一批代表性頁面(首頁、栏目、詳情、分頁、篩選结果),查看源碼里的 canonical 是否都指向预期地址。
  2. 確認 canonical 的目标頁返回 200,且没有被 robots.txt 屏蔽、没有 noindex。
  3. 分頁頁保持 self-canonical,不要全部指向第一頁,否則後面的列表内容可能不再被抓取。
  4. 篩選、排序、會话類參數頁,優先用 robots.txt 或參數處理規則解决,而不是全站统一指向某個固定頁。
  5. 内容确實存在多個版本时,canonical、站点地图、内鏈、hreflang 尽量指向同一個地址,信号越一致,蜘蛛的判断越省事。
  6. 改動上线後,用服務器日誌观察這些 URL 的抓取频率和返回碼變化。
canonical 只是给蜘蛛的提示,不保證一定被采纳,也不承诺收錄或排名结果。它的價值在于减少歧义,让蜘蛛少做一次猜测。

改完之後怎么驗證

先看單頁:用抓取工具或直接查看渲染後的 HTML,確認标簽存在且地址正确。再看整站:站点地图里列的 URL、内鏈指向的 URL、canonical 声明的 URL,三者越接近越好。最後看日誌,如果某個版本長期没有蜘蛛訪問,而另一個版本被抓得很频繁,說明還有地方在给蜘蛛指错路。

canonical 不是一次性配置。新增栏目、站点改版、調整 URL 規則之後,都要重新對一遍。把它当成日常检查項,比出現問题後再回头排查要省事得多。