站点运营

站点运营:canonical 與規范化 URL 自查,別让同一篇内容出現多個版本

同一篇内容常常以多個 URL 存在:带 www 與不带、带尾斜杠與不带、带參數與不带。本文梳理重复版本的常见来源,给出一份可执行的 canonical 自查清單,並說明什么情况下该用 301、什么情况下用 canonical,以及如何让站点地图、内鏈和分享連結與規范地址保持一致。

站点运营

站点运营:canonical 與規范化 URL 自查,別让同一篇内容出現多個版本

很多站点執行一段時間後,同一篇内容會以多個 URL 的形式存在:带 www 和不带 www、带尾斜杠和不带、大寫和小寫、带參數和不带參數。對訪客来说這些頁面看起来一样,但對搜尋引擎来说,它們是几個不同的地址。canonical(規范化連結)就是用来声明“這几個地址里,哪個是正本”的一種标记。

哪些操作容易产生多個版本

  • 同一篇文章既能從分類頁進入,也能從标簽頁、归档頁進入,地址各不相同;
  • 列表頁翻頁後,後面的頁面與第一頁内容部分重合;
  • 站内搜尋、排序、篩選參數被完整保留在 URL 里,並且這些地址被内鏈或外鏈引用;
  • http 與 https、www 與裸域同时可訪問,没有做统一跳轉;
  • URL 结尾斜杠處理不统一,带斜杠和不带斜杠都能打開;
  • 文章改版後新地址上线,舊地址仍返回 200,而不是跳轉。

一份可执行的排查清單

  1. 结合站点地图和服務器日誌,列出被訪問較多的地址,挑出内容相同、地址不同的组合。
  2. 確認每個頁面的 canonical 是否指向自己,而不是全站所有頁面都指向首頁。
  3. 检查 canonical 地址本身能否正常打開、返回什么狀態碼、协议與域名是否和頁面實际使用的一致。
  4. 查看分頁、篩選參數頁面是否被统一声明成同一個地址,導致後續頁面失去獨立身份。
  5. 核對列表頁、标簽頁、作者頁等聚合頁面,canonical 是否與實际呈現的内容對應。
  6. 抽查舊地址是否還在站内被連結,如果有,考虑改成規范地址。

canonical 不是萬能钥匙

canonical 是一種建议,而不是强制指令。如果站内有大量連結指向非規范地址,或者舊地址仍返回 200 並被外部引用,搜尋引擎依然可能選擇它認為更合适的版本。所以声明 canonical 的同时,最好把站内連結同步统一到規范地址上,把信号做一致。

什么时候该用 301

如果某個地址已经确定不再使用,比如換域名、改路径、合並栏目,301 跳轉比 canonical 更干脆,它直接把訪客和蜘蛛送到新地址。canonical 更适合“两個地址都要保留”的情况,例如带參數的排序頁、打印頁、會话參數頁。

規范化的目标是让同一份内容只有一個主地址,而不是把多個頁面的表現硬塞给某一個頁面。

让各個信号保持一致

  • 站点地图里只提交規范地址,不要混入參數版本和舊路径;
  • 導航、面包屑、正文内鏈一律指向規范地址;
  • 分享按钮、Open Graph 等信息使用規范地址;
  • HTTP 响應头里的 Link rel=“canonical” 與頁面内的声明保持一致,不要互相矛盾。

几個常见誤用

  • 所有頁面 canonical 都指向首頁,等于告诉搜尋引擎這些頁面都是首頁的副本;
  • canonical 指向一個已经 404 或者會跳轉的地址;
  • 分頁頁面全部 canonical 到第一頁,後續内容更难被單獨發現;
  • canonical 用相對路径时寫错层級,實际指向了不存在的地址;
  • 改版後只加了 canonical,却忘了把舊地址做跳轉,两個版本長期並存。

規范化不是一次性工作。每次改版、上线新栏目、接入新參數或者調整分頁規則之後,都值得抽几個典型地址检查一遍。發現問题时,先想清楚這份内容到底應该以哪個地址為主,再去决定用 301 還是 canonical,站内連結、站点地图和分享連結跟着一起改,整站的地址结构會清爽很多。