同一個頁面,在搜尋引擎眼里可能對應好几個不同的 URL。末尾斜杠、大小寫、带不带參數、www 與裸域、http 與 https,都會让地址變样。對蜘蛛来说,URL 是识別頁面的第一把钥匙,地址不统一,抓取和收錄自然就被分散了。
一個頁面變成多個地址的常见来源
- 末尾斜杠:/about 與 /about/ 在很多服務器上是两個地址。
- 大小寫:/News 與 /news,如果服務器不做归一,就是两個頁面。
- 域名寫法:www.example.com 與 example.com 預設不是同一個站。
- 协议:http 與 https 並存时,两邊都能被訪問到。
- 跟踪與排序參數:?from=xxx、?sort=price、篩選條件,能组合出大量地址。
- 會话 ID 與分頁參數:?sid=、?page= 等,容易生成内容高度相似的頁面。
這些地址多數指向同一份内容,但若没有明确指向關系,站内連結、外鏈、用戶分享會各走各的路,權重和抓取机會也跟着被切碎。
地址不统一,收錄會怎样
常见表現有三種:一是同一份内容出現多個版本同时進入索引,彼此竞争;二是規范版本迟迟不被選中,搜尋结果里呈現的地址不固定;三是部分版本被当作低價值頁面處理,抓取资源花在了重复地址上。
需要說明的是,搜尋引擎自身有一定的相似内容合並能力,但這是兜底,不是你可以依赖的方案。站内把地址關系说清楚,成本遠低于事後补救。
規范化:先定主地址,再让全站指過去
第一步:為每類頁面選定一個規范 URL
規則要简單且能長期执行。比如:统一带末尾斜杠或统一不带;路径一律小寫;统一使用 https 加 www 或统一裸域。把它寫進開發規范,而不是每次靠人工判断。
第二步:站内連結保持一致
導航、面包屑、内鏈、站点地图、RSS 里的地址,都要指向規范版本。站内連結是最直接的信号,連結里混着两種寫法,等于自己给蜘蛛發了两套指令。
第三步:能 301 就別只靠 canonical
非規范地址如果可以被訪問,優先用 301 永久跳轉到規范地址,把訪問和信号一並集中過去。canonical 标簽适合那些必须保留、無法跳轉的场景,比如带參數的列表頁。两者是分工關系,不是替代關系。多個不同的 canonical 指向同一個地址,通常没有意义,反而增加解讀成本。
參數類 URL 的處理思路
- 改變内容的參數:如分頁、排序方式,通常保留,但要保證每頁有可抓取入口,並让 canonical 指向自身或合理的規范頁。
- 不改變内容的參數:如来源統計、短鏈參數,建议用 301 归並或加 canonical 指向無參數版本。
- 會话 ID、打印頁、彈窗视图:一般不需要單獨收錄,可用 robots.txt 或 noindex 挡在索引之外,具体取决于你是否希望它被抓取。
- 篩選组合:數量可能极大,建议只放行有搜尋價值的少數组合,其余收敛。
一份可执行的自查清單
- 列出網站可能被訪問到的地址形態,逐個確認是否存在同一内容多地址。
- 確認 301 規則覆盖了 http 到 https、裸域到 www、末尾斜杠、大小寫四類常见情况。
- 抽查導航、内鏈、站点地图中的地址寫法是否一致。
- 检查頁面的 canonical 是否指向真實存在的規范地址,且不互相指向。
- 在抓取日誌里观察,非規范地址是否仍在被频繁抓取;如果是,說明归並還没生效。
- 改動後留出观察周期,不要几天就反复調整規則。
地址统一是個慢變量。它不會立刻改變收錄數量,但會决定你的抓取资源和頁面信号是集中還是分散。先把規則定下来,再谈優化。