入口頁數量一多,URL 寫法上的小差异就會被放大。同一篇内容可能出現 /news/123、/news/123/、/News/123 三種形態,在蜘蛛眼里它們是三個不同的地址,抓取次數、連結池记錄、日誌統計都會跟着分裂。URL 结构本身不决定收錄,但它直接影响蜘蛛能不能理顺一個站点的抓取路径,值得在接入蜘蛛池之前先把規則定下来。
寫法不统一會带来哪些麻烦
- 同一個頁面被拆成多個地址,抓取請求重复消耗在相同内容上。
- 連結池入库通常按字符串去重,大小寫和斜杠不同就当成新 URL,出库队列越滚越長。
- 日誌里同一頁面的訪問資料分散在好几條记錄中,判断抓取效果时容易誤判。
- 站内連結指向不一致,蜘蛛在几個變体之間来回爬,形成低效循环。
最常见的几類差异
大小寫
Linux 环境下 URL 路径区分大小寫,/News/123 和 /news/123 是两個资源。比較省事的做法是路径和文件名统一使用小寫;如果歷史原因已经存在大寫地址,用 301 归到小寫版本,不要同时保留两套可訪問的副本。
末尾斜杠
带不带斜杠在很多服務器配置里同样是两個地址。目錄形式的頁面和文件形式的頁面最好分開對待,選定一種作為标准寫法,另一種统一 301 過去。混着来最容易让入口頁批量生成时出現两套地址。
查询參數
分頁、排序、篩選、来源跟踪這几類參數最容易失控。来源跟踪類參數(utm、ref、from 等)可以让它繼續起作用,但頁面上的 canonical 應指向不带跟踪參數的干净地址;分頁參數則要保留,一律砍掉會让蜘蛛拿不到後續列表。參數顺序尽量固定,避免 ?a=1&b=2 與 ?b=2&a=1 同时存在。
其他容易被忽略的小差异
- 預設端口是否顯式寫出,例如 :80 與 :443。
- www 與非 www 是否都返回 200。
- 路径中连續出現的双斜杠。
- 中文字符轉义與未轉义两種形式並存。
定規則的實际做法
- 先選一個标准形態,例如全小寫、不带末尾斜杠、不带跟踪參數。
- 在服務器层做统一:所有變体 301 到标准形態,不要依赖 JS 跳轉。
- 站内連結、sitemap、連結池入库都按标准形態生成,從源头减少變体。
- canonical 作為兜底标注在頁面上,但不要拿它替代 301。
- 改完之後观察一段時間日誌,看變体請求是否真的下降。
入口頁要額外注意的几点
- 入口頁數量大、模板相似,批量生成 URL 时更容易出現拼寫残留和參數残留,生成脚本里最好加一道規范化處理。
- 跳轉鏈路上不要再套一层带參數的地址,否則每跳一次就多出一個變体。
- 避免在入口頁輸出随机串或時間戳參數,這類參數會让 URL 數量無限增長,把抓取次數耗在空頁面上。
規范化的目标是让蜘蛛把有限的抓取次數花在真正不同的内容上,而不是在同一個頁面的多個寫法之間打轉。它不保證收錄,但能减少無谓的消耗。
URL 结构不是接入蜘蛛池之後才需要處理的事,它属于站点的基础准备工作。規則定得越早,後續換域名、換模板、扩入口頁的时候越省事。