同一個頁面,往往不止一個 URL 寫法。带不带尾斜杠、大小寫、是否带 index.html、參數顺序不同,甚至挂上跟踪參數,都會生成一個新的字符串。對蜘蛛来说,URL 是字符串而不是頁面,字符串不同就可能被当成另一個地址排進队列。重复入口多了,抓取预算被摊薄,日誌和报表也會虚高。
常见的几種重复寫法
- 尾斜杠差异:/a 與 /a/
- 大小寫差异:/Page 與 /page,在大小寫敏感的服務器上是两個地址
- 預設文件名:/a/ 與 /a/index.html
- 參數顺序:?a=1&b=2 與 ?b=2&a=1
- 跟踪與营销參數:?utm_source=... 這類附加參數
- 协议與主机名:http 與 https、带 www 與不带 www
蜘蛛會怎么處理這些寫法
蜘蛛在解析頁面时,會對同一頁面内的連結做一次简單去重,但那只针對完全相同的字符串。只要寫法有差別,它就會当成新 URL 去發現、排队、抓取。canonical 标簽是提示,不是强制指令;服務器端的 301 更明确,蜘蛛看到跳轉後會把目标当作最终地址。
如果内鏈、Sitemap、外鏈分別指向不同寫法,同一個頁面就可能被從几條路径反复抓取,而真正需要抓取的新頁面排在後面。
重复 URL 带来的實际影响
- 抓取预算被分散到同一份内容的多個地址上,新頁面的發現速度可能變慢。
- 服務器日誌里的抓取次數虚高,看起来抓了很多,實际有效頁面並不多。
- 外鏈權重被拆到多個 URL,頁面在連結關系上顯得更弱。
- Sitemap 和内鏈寫法不一致时,蜘蛛收到的信号互相矛盾,規范地址更难确立。
收敛重复入口的做法
- 先定一個規范寫法:确定是否带尾斜杠、用哪個主机名和协议,然後全站统一。
- 内鏈按規范寫法寫:導航、面包屑、正文連結、分頁連結都用同一個寫法,這是最省事也最有效的一步。
- 服務器做 301:把大小寫错誤、index.html、舊协议、非首選主机名统一跳到規范地址,一條規則能解决一批。
- canonical 指向規范地址:頁面自身也使用規范地址,不要指向另一個變体。
- Sitemap 只列規范 URL:不要把所有變体都塞進去,那等于主動把蜘蛛引向重复地址。
- 處理跟踪參數:能去掉參數做跳轉的去參數跳轉,去不掉的用 canonical 收敛,並避免在内鏈里带參數。
怎么確認是否收敛了
把一段時間内的服務器日誌按 URL 归並,观察同一份内容對應几個地址、各自被抓了多少次,再看這部分重复抓取的占比是否在下降。如果改完規則後,重复寫法仍然被大量抓取,通常是還有内鏈或外鏈指向舊寫法,需要繼續找来源。
規范化的目标不是让頁面不被抓,而是让抓取次數集中在一個地址上。收敛需要一段時間,舊的寫法被外部引用得越多,過渡期就越長。
重复 URL 不會立刻造成明顯問题,但它會持續消耗抓取资源,並让路径判断變得模糊。把寫法统一、跳轉做清楚、Sitemap 只留規范地址,是运营侧能直接落地的三件事。