站点运营做久了,常會遇到一種情况:同一篇内容可以用好几個地址打開。带跟踪參數的、带尾斜杠的、大小寫混用的、移動端专用路径的,甚至還有從舊版栏目複製過来的。對用戶来说,這些連結可能只是長得不一样;但對搜尋引擎和蜘蛛来说,每一個能正常返回的地址,都是一個需要單獨抓取、單獨判断的 URL。地址越多,抓取预算越分散,頁面之間原本應该集中的信号也容易被拆開。
重复地址通常從哪来
先弄清楚来源,比急着加标簽更有用。常见的几類来源如下:
- URL 參數:跟踪參數、排序參數、篩選參數、會话 ID,都會让同一個頁面生成大量變体地址。
- 书寫差异:大小寫、结尾斜杠、带不带 index 文件,服務器如果都返回 200,就會形成多份内容。
- 协议與域名:http 與 https、带 www 與不带 www,如果同时可訪問且没有跳轉,等于同一内容有两個站点入口。
- 特殊版本路径:打印頁、AMP 頁、移動版獨立路径,如果没有做好指向關系,會被当成獨立内容。
- 分頁與聚合:列表翻頁、标簽聚合頁、专题頁,容易和原始内容頁产生大量重叠。
一份可执行的自查清單
不必全站铺開,先随机抽二三十個内容頁,按下面几步走一遍,問题通常就能暴露出来:
- 用带參數、大寫、無尾斜杠等不同寫法分別訪問同一個頁面,看是否都返回 200。
- 查看頁面源碼,確認 canonical 指向的是自身的主地址,而不是別的栏目或首頁。
- 检查 canonical 是否被模板寫死成同一個值,這種情况在改版後特別常见。
- 對照 sitemap,看提交的是哪一個版本的地址,和 canonical 是否一致。
- 检查站内連結、面包屑、相關推荐,指向的是主地址還是带參數的地址。
- 確認參數地址是否有 301 或規則拦截,而不是長期可訪問。
canonical 寫法的几個注意点
- 使用完整的绝對地址,不要寫相對路径,避免解析歧义。
- 指向的目标應当是正常返回 200 的主地址,不要指向 404 或已重定向的地址。
- 避免 A 指向 B、B 又指向 C 的鏈式寫法,鏈條越長,越容易被忽略。
- 分頁列表中,每一頁通常指向自身,而不是全部指向第一頁。
- 同一内容的不同版本不要各自指向不同的地址,否則等于同时發出互相矛盾的信号。
只加 canonical 還不够
需要說明的是,canonical 對搜尋引擎而言是一種提示,並不保證一定被采纳。真正稳妥的做法,是让多個入口指向同一個结果:能跳轉的用 301 跳到主地址,站内連結尽量只鏈主地址,sitemap 里也只提交主地址。三者方向一致时,蜘蛛遇到的重复路径會明顯减少,判断成本也更低。
另外,規范化不是一次性工作。新增栏目、改版、切換 CDN、調整伪静態規則之後,舊的地址可能又冒出来。建议把這項检查放進运营例行動作里,每次结构有變動就抽查一轮。
重复地址本身不算错誤,真正麻烦的是它們長期共存、互相没有關系說明。把入口收拢到一個地址上,抓取和信号才有机會集中起来。