很多站点的 URL 數量遠大于内容數量,原因多半出在程序化生成的頁面上:一套篩選條件、一個排序參數、一次站内搜尋,就能拼出一個新網址。這類 URL 不是垃圾,但也不是每一頁都值得占用索引位置。判断的核心其實只有两点:這頁有没有稳定的獨立内容,以及用戶會不會拿它当搜尋入口。
先把程序化 URL 分成三類
- 篩選與排序參數頁:颜色、價格区間、排序方式等。内容通常與主列表頁高度重合,只是顺序或子集不同。
- 标簽與聚合頁:由主题词把内容聚在一起,可能有獨立價值,也可能只是把已有文章換個顺序排列。
- 站内搜尋结果頁:内容随查询词變化,是给站内用戶用的工具,一般没有對應的外部搜尋需求。
三類頁面的處理方式不應该一样,混在一起讨论“要不要收錄”很容易得出错誤结论。
判断是否值得收錄的四個問题
- 有人在搜尋引擎里搜這個词吗?如果有稳定的搜尋量,頁面才有机會自己带来流量。
- 它和父級列表頁的内容差异有多大?如果只是排列组合,重复度會很高。
- 有没有稳定的站内入口?只靠參數拼接、没有任何頁面鏈進来的 URL,抓取優先級會很低。
- 參數组合是否可控?無限组合意味着無限 URL,爬虫预算會被快速消耗。
三種處理方式
值得保留的:做好内容和内鏈
有搜尋需求、内容确實不同的篩選頁或标簽頁可以保留,但要给它一段說明文字、合理的标题,並确保有站内連結指向。否則它即使被收錄,也很难获得展現。
重复度高的:用 canonical 收敛
把參數頁或排序頁的 canonical 指向對應的主列表頁,让權重集中到一處。前提是两者内容确實高度一致,指向不相關頁面反而會造成混乱。
没有獨立價值的:登出索引
站内搜尋结果頁、無意义參數组合通常适合加 noindex。注意 noindex 需要頁面能被抓取才能被讀到,如果同时在 robots.txt 里屏蔽,爬虫看不到這個标簽,頁面仍可能因為外部連結以“僅 URL”的形式出現在索引里。
robots.txt 管的是能不能抓,noindex 管的是能不能進索引。想让它登出索引,就別挡住抓取。
几個容易踩的坑
- 全站參數頁统一 noindex,结果把有搜尋價值的聚合頁也一起關掉了。
- canonical 和 noindex 同时出現在同一頁,两個信号互相冲突,最终按 noindex 處理。
- 篩選頁全部屏蔽後,内容頁的站内連結路径變少,反而拖慢了新内容的發現。
- 上线後不复查,參數規則改了但舊配置還留在模板里。
怎么驗證處理是否有效
- 在索引覆盖率报告里看“已排除”的原因分布,確認是被 noindex 還是被判為重复。
- 抽查一批參數 URL,看 canonical 指向是否符合预期。
- 對比處理前後抓取日誌中參數頁的請求占比,確認爬虫预算是否回流到内容頁。
- 保留的聚合頁观察一到两個抓取周期,看是否進入索引並有展現。
程序化 URL 的處理没有统一答案,關键是把“有獨立價值”和“只是排列组合”分開對待。與其一刀切地全開或全關,不如按類型定規則,再定期用报告和日誌回头驗證。