搜尋抓取

同一份内容多個 URL:尾斜杠、大小寫與參數怎么统一

蜘蛛會把每一個能打開的地址当成獨立 URL,尾斜杠、大小寫、跟踪參數、协议版本都可能让同一頁面裂成好几條地址。本文梳理這些重复来源的形成過程,以及 301、canonical、内鏈统一和 Sitemap 收敛之間怎么配合,帮你减少無效抓取。

搜尋抓取

同一份内容多個 URL:尾斜杠、大小寫與參數怎么统一

同一篇文章,可能對應好几個都能正常打開的地址:带 www 的和不带 www 的、带尾斜杠和不带尾斜杠的、大寫路径和小寫路径、带跟踪參數的分享連結和不带參數的干净地址。對用戶来说這没什么区別,但對搜尋蜘蛛来说,每個可訪問的地址都是獨立的 URL,都要單獨排队、單獨抓取、單獨判断内容是否相同。

一個頁面裂成多個 URL,代價是什么

最直接的影响是抓取机會被摊薄。原本可以花在一個地址上的抓取次數,被分散到几個内容完全一样的地址上。其次是判断上的干扰:多個版本互相竞争,蜘蛛需要額外花時間去確認哪個才是主版本,日誌里也會出現大量看起来重复的抓取记錄。所以 URL 去重不是洁癖,而是让抓取和收錄都更省力的一步。

常见的几種“分身”来源

尾斜杠

/a 和 /a/ 在不少服務器配置下都會返回正常内容。如果两個都返回 200,蜘蛛就會当成两條 URL 分別處理。做法是全站统一一種寫法,要么全部带尾斜杠,要么全部不带,另一種用 301 收到统一版本上。麻烦的是模板和編輯器各自带一套規則,所以最好在服務端配置里一次定下来。

大小寫

URL 路径在多數服務器上是区分大小寫的,/News/1 和 /news/1 可能是两個不同頁面。站内連結、模板變量、CMS 自動生成的路径如果大小寫不一致,重复地址就會悄悄長出来。检查时可以按小寫和原始寫法各統計一次日誌。

參數與跟踪碼

utm_source、ref、from 這類參數會产生大量“同一頁不同地址”。用戶分享、广告投放、站内跳轉都可能自動带上。它們的價值在統計,不在给蜘蛛看。常见组合是頁面内用 canonical 指向不带參數的版本,同时在 robots.txt 里不鼓励抓取典型的跟踪參數。注意 robots.txt 只是不鼓励,不等于阻止,canonical 才是主要的收敛手段。

协议與 www

http 與 https、www 與裸域,最好只保留一套對外可訪問,其余 301。两套同时開着且都能正常浏览,是重复地址里最容易修、也最容易被忽略的一種。

收口的几種做法

  • 301 永久跳轉:适合明确的重复版本,把訪問和權重都干脆地收到規范地址上。
  • canonical:适合參數變体、排序篩選這類不方便全部跳轉的场景,在頁面内声明規范地址。
  • 内鏈统一:模板和正文里的連結一律寫規范地址。蜘蛛大多是從連結發現 URL 的,連結怎么寫,它就先怎么记。
  • Sitemap 只放規范版本:地图里混入多個變体,等于主動告诉蜘蛛這些都值得抓。

301 和 canonical 不冲突,可以叠加使用。原則是:能跳轉的優先跳轉,跳轉會破坏用戶体驗或功能的地方,再用 canonical 兜底。

參數頁面:哪些该走,哪些该收

篩選、排序、分頁、站内搜尋结果,是參數 URL 的主要来源。判断标准可以很朴素:這個參數组合下,頁面是否有獨立的價值。排序參數通常只是同一批内容換個顺序,同质化嚴重,适合 canonical 到主版本。篩選參數如果确實组合出了有搜尋需求的頁面,可以留一部分,但要控制數量,避免组合爆炸。站内搜尋结果頁尽量不要開放给蜘蛛——它本身就是一個爬虫,让蜘蛛進去容易陷入大量無意义的地址。

定期检查的几步

  1. 在服務器日誌里按路径統計抓取次數,找出同一份内容對應的多個地址。
  2. 把 Sitemap 里提交的地址與日誌對照,看蜘蛛抓的是不是規范版本。
  3. 調整跳轉和 canonical 之後观察一段時間,抓取分布會慢慢變化,不要指望立刻改观。
規范化的目标是让蜘蛛少走冤枉路,不是把 URL 數量压到越少越好。有獨立内容、有搜尋需求的頁面,该留就留。

小结:這件事越早统一越省事。它不會直接带来排名,但能减少抓取浪費,把有限的机會留给真正需要更新和收錄的頁面。