很多站点的問题不是抓取不够,而是同一個頁面存在好几個都能打開的地址。搜尋引擎分別抓到這些地址,收錄、外鏈權重和点击資料就被分散到不同 URL 上,表現自然不稳定。地址统一不是一次性工程,而是先盘点、再收敛、最後守住的過程。
同一頁面為什么會有多個地址
常见来源其實就那么几類,逐條對照就能找到大部分問题。
- 大小寫差异:/Product/A1 和 /product/a1 在部分服務器上都能返回 200。
- 末尾斜杠:/list 與 /list/ 同时可訪問。
- 主机名:example.com、www.example.com 甚至 m.example.com 都能打開同一套内容。
- 协议:http 與 https 並存,或 https 站点下仍能通過 http 訪問。
- 預設文件:/about 與 /about/index.html 都返回完整頁面。
- 端口與内部地址::8080、内網 IP 或測試域名偶尔被外部連結引用。
先盘点,再决定统一到哪個地址
- 把頁面實际可訪問的地址列出来,不要只凭印象。服務器訪問日誌按路径聚合,通常一眼就能看出變体。
- 看索引里已经收錄的是哪一個版本,外鏈與点击資料集中在哪一個。
- 看站内連結、面包屑、sitemap、分頁和结构化資料里寫的是哪一個地址。
- 看現在的 canonical 與跳轉指向哪里,是否互相矛盾。
统一目标的選擇没有绝對答案,但通用原則是:優先選擇已经有歷史資料和外部連結的版本,而不是自己主观上更喜欢的那個。新站点則尽量選结构简單、不带 index.html、协议與主机名唯一的地址。
收口方式:一個地址對外,其余 301
canonical 是提示,301 是更强的信号。對于确定不會再作為主地址使用的變体,用 301 直接指向目标地址,比只寫 canonical 更干净。但要注意两点:
- 跳轉要一步到位,避免 A→B→C 的鏈式跳轉,鏈越長,信号损耗越大。
- 不要出現 301 指向 A、canonical 指向 B 的情况,两個指令打架时,處理结果會變得难以预测。
如果變体數量很大,比如带排序或跟踪參數的地址,可以用規則批量處理,而不是逐個配置。參數收口與地址统一是两件事,可以一起做,但要分別驗證。
容易漏掉的几處
- 内鏈一致性:站内連結大小寫、斜杠不统一,會让爬虫不断發現新變体。统一模板和編輯規范比事後清理省力得多。
- sitemap 與 RSS:里面寫的地址應與主地址完全一致,包括协议和主机名。
- 分頁與篩選:第二頁、篩選结果常會從主列表衍生出大量地址,需要單獨定規則。
- 分享與广告連結:带 utm 參數的分享連結被轉载後,容易形成新的收錄入口。
- 服務器大小寫敏感:本地開發环境不敏感、线上敏感,很容易上线後才發現問题。
建议的處理顺序
- 先统一主机名與协议,這一步影响面最大,也最容易用整站跳轉完成。
- 再處理路径层面的變体:末尾斜杠、預設文件、大小寫。
- 然後是參數與篩選類地址,按規則收口並观察抓取變化。
- 最後回到内鏈和模板,堵住新變体产生的入口。
地址统一的效果通常体現在抓取分布更集中、重复頁面减少、單個 URL 的表現更稳定,而不是第二天就出現明顯的收錄增長。
處理完之後不必天天盯着收錄數字。定期抽查新上线栏目和模板改動,確認它們仍然指向同一個主地址,防止舊問题重新長出来,就足够了。