同一篇内容,用戶可能通過多個地址訪問:带 www 和不带 www、http 和 https、末尾有没有斜杠、带不带參數。對用戶来说也许只是地址不同,但對搜尋引擎来说,這些可能是多個獨立 URL。如果不做收敛,抓取预算會被分散,外鏈和点击也可能落到不同地址上,後續統計和维護都會變麻烦。
先找出所有能到達同一頁面的地址
自查时不要只看浏览器地址栏。把下面這些入口都列出来:
- http 與 https 两種协议;
- 带 www 與不带 www 的域名;
- 末尾带斜杠與不带斜杠;
- 大小寫不同的路径,例如 /Page 與 /page;
- 带跟踪參數、排序參數、會话 ID 的地址;
- 分頁、打印版、AMP 或移動版等派生地址;
- 站内搜尋、标簽聚合生成的參數化地址。
把這些地址整理成一張表,标出哪些返回 200、哪些已经跳轉、哪些是歷史遗留。
确定主地址,並让服務器和頁面说法一致
每個頁面應该只有一個首選地址。選定後,從三個层面落實:
- 服務器层:用 301 把其他域名、协议、大小寫變体跳到主地址。不要用 302 做長期規范化。
- 頁面层:在 head 中寫 canonical,指向首選地址。canonical 最好是绝對地址,並且能直接訪問、返回 200。
- 站内层:導航、内鏈、站点地图、分享按钮、RSS 都使用主地址,不要随手複製浏览器里的带參數連結。
canonical 常见誤用
- canonical 指向一個 404 或重定向地址,等于告诉搜尋引擎一個不存在的主地址。
- 所有分頁都 canonical 到第一頁,導致後續頁面的内容不被獨立看待。分頁是否收敛要看栏目设計,不要机械套用。
- canonical 與 hreflang 各说各话,多語言頁面互相指向错誤。
- 只在首頁或模板里寫死 canonical,栏目頁、詳情頁没有動態輸出正确地址。
- 用 canonical 代替 301。canonical 是提示,不是强制跳轉,用戶仍可能停留在舊地址。
把检查放進日常节奏
規范地址不是一次配置就結束。以下情况發生後要复查:
- 新增域名、切換 CDN 或開啟 HTTPS;
- 改版調整 URL 结构或栏目路径;
- 上线新的篩選、排序、分頁參數;
- 從其他平台迁移内容,带来大量歷史地址。
可以定期抽几個重点栏目,用抓取工具或日誌查看:同一内容是否還有多個地址被訪問,canonical 是否與内鏈、站点地图一致。發現問题先修主入口,再處理零散外鏈。
規范地址的目标不是追求一個完美 URL,而是让用戶、搜尋引擎和内部統計都認同一個地址。少一点地址分叉,後續的更新、合並和下架都會轻松一些。