為什么同一個頁面會有多條地址
頁面本身只有一個,但站内鏈出去、Sitemap 里寫、外部推廣带上的地址可能都不一样。搜尋蜘蛛是按 URL 走的,不同 URL 就是一個新地址,它會分別發現、分別抓取、分別判断。發現入口越多,重复的那部分就越容易被放大。
最常见的几類重复来源
- 营销追踪參數:utm_source、from、ref 之類,渠道一多,同一條連結能生成几十個版本。
- 會话與用戶标识:sessionid、sid、uid 出現在 URL 里,几乎每次訪問都可能生成新地址。
- 排序與篩選參數:?sort=、?order=、?page= 在列表頁上随手就能拼出大量组合。
- 缓存與調试參數:v=1、時間戳,上线时為了绕開缓存加上,之後忘了去掉。
- 大小寫、斜杠、預設頁:這類属于地址形態不统一,常常和參數問题一起出現。
重复發現會带来什么成本
抓取配額是有限的。同一份内容被几十個地址訪問,花在別處的請求就少了。更麻烦的是判断:日誌里几千條记錄看起来像几千個頁面,真實頁面只有几十個,排查問题时很难看出哪里出了状况。此外,当 Sitemap、内鏈和 canonical 各自指向不同版本时,传给搜尋蜘蛛的信号本身就是矛盾的。
處理顺序:先看日誌,再動手
- 從服務器日誌或搜尋後台的抓取統計里,找出請求次數最多、路径相同只是參數不同的那一批 URL。
- 確認哪個是規范版本:一般是不带任何參數、和頁面内容一一對應的那個地址。
- 頁面上的 canonical 指向規范版本,並且這個标簽要能在源碼里直接看到,不要依赖脚本後期寫入。
- 站内連結和 Sitemap 统一寫規范版本,別再顺手带上追踪參數。
- 如果某些參數组合确實没有獨立内容價值,可以用 robots.txt 的 Disallow 或搜尋後台的參數設定工具處理,但要先確認屏蔽後不會挡住真正需要被抓取的地址。
- 改完观察一到两個抓取周期,看重复 URL 的請求量是否下降,而不是当天就下结论。
几個容易做過头的地方
不要一刀切屏蔽所有带問号的地址
站内搜尋、分頁、部分篩選頁本身可能是有價值的入口,粗暴屏蔽會连带影响這些頁面被發現。更稳妥的做法是先分清楚哪些參數會改變頁面内容,哪些只是记錄来源。
canonical 和實际入口要一致
如果 canonical 寫的是 A,内鏈和 Sitemap 都在推 B,搜尋蜘蛛更容易相信它實际抓到的那個。三者對齐,比單点優化更有效。
外鏈上的參數不必强行回收
別人怎么做連結你控制不了。能做的是让自己站内的入口保持干净,让規范版本在内鏈和 Sitemap 里得到足够多的指向。
重复地址的治理是收敛入口,不是消灭所有參數。目标是把抓取和判断集中到少數几個地址上,而不是把所有带問号的連結都堵死。
小结
同一頁面出現多條地址,多數时候来自自己站内的入口寫法。先把日誌看清,确定規范版本,再让 canonical、内鏈、Sitemap 三處保持一致。收敛是一個持續的過程,渠道活動、埋点調整都可能重新引入參數,需要定期回头看一眼。