同一個内容出現在多個地址上,是站点运营里很常见的情况。带參數的地址、大小寫不同的路径、http 與 https、带 www 與不带 www、分頁與篩選,都可能指向基本相同的頁面。canonical 的作用,就是在這些相似地址里指出一個主地址,帮助把權重和信号集中到一處。它不是開關,也不承诺收錄结果,而是一份明确的說明。
哪些情况會出現重复地址
- 追踪參數:utm_、from、ref 等只用于統計的附加參數
- 篩選與排序:颜色、價格、排序方式组合出的地址
- 大小寫與斜杠:/Page 與 /page、/a 與 /a/ 同时可訪問
- 协议與域名變体:http 與 https、带 www 與不带 www 都能打開
- 打印頁、AMP 版、移動版等同一内容的其他輸出形式
- 同一篇内容通過多個栏目路径都能到達
canonical 與 301 的分工
如果舊地址已经不再使用,訪客也不该再看到它,用 301 永久跳轉比 canonical 更干脆。canonical 更适合那些需要保留、仍要被訪問的地址,比如篩選頁、带參數的分享連結。两者不要互相打架:一個頁面既 301 到 A,又 canonical 指向 B,會让人看不懂。
自引用也不能省
主地址自身也要寫 canonical 指向自己。這样能减少模板拼接出错带来的意外,也能在參數被附加时保持指向稳定。
自查步骤
- 選取一批典型頁面:首頁、栏目頁、詳情頁、分頁、篩選頁、带參數地址
- 查看源代碼里的 link rel=canonical,確認用的是绝對地址,且與頁面主地址一致
- 用不带參數的干净地址訪問一次,對比带參數版本的 canonical 是否相同
- 检查 http 與 https、www 與非 www 是否都能訪問,是否都指向同一個主地址
- 检查分頁:第 2 頁以後是自引用,還是被模板统一指回了第 1 頁
- 检查移動版與 PC 版是否各自正确,或统一指向同一主地址
- 记錄問题清單,按模板批量修复,而不是逐頁手改
常见错誤
- canonical 指向了一個已经 404 或正在跳轉的地址
- 全站模板寫死同一個 canonical,所有頁面都指向首頁
- 使用相對路径,在部分目錄下解析出了错誤地址
- 分頁全部指向第一頁,後續内容被誤当成重复
- 參數頁 canonical 到主地址,而主地址本身又是另一個參數地址
- 與 noindex、robots 規則冲突,一邊说別收錄,一邊又指主地址
canonical 是建议,不是命令。搜尋引擎可能根據其他信号選擇別的地址,所以更稳妥的做法是让站内结构、内鏈和站点地图都指向同一個主地址,几個信号保持一致。
把它当成長期清單
新增模板、改版、增加參數时,都顺带確認一次 canonical。主地址统一之後,再做流量分析和内容排查,資料才更容易讀懂,也更少出現同一個頁面被拆成几條记錄的情况。