做电商、房产、招聘或本地服務類的站点,运营一段時間後常會遇到同一個問题:一個分類列表頁,加上品牌、價格区間、颜色、排序方式等几個篩選條件,很快就能组合出几百上千個带參數的地址。這些地址算不算“入口”,搜尋蜘蛛要不要挨個走過去,是 URL 發現环节里最容易被忽略的一段。
參數是怎么把 URL 數量放大的
组合放大的道理很简單:每增加一個可篩選维度,地址數量就會成倍上涨。常见的来源包括:
- 品牌 × 價格区間 × 排序方式 × 分頁,四层叠加就是一串長尾;
- 同一组篩選條件換個參數顺序、再加一個跟踪參數,又是新的地址;
- 篩選後没有任何结果,頁面依然返回 200 狀態碼。
只要頁面上有可点击的連結指向這些组合,它們就會被搜尋蜘蛛顺着發現。發現之後值不值得抓取、抓取之後值不值得索引,是後面两個獨立的問题。
先判断:這些參數頁有没有獨立價值
内容是否真的不同
服務端渲染、篩選後 HTML 里商品或房源确實發生變化的,才算有差异;如果篩選完全靠前端完成,返回给搜尋蜘蛛的 HTML 與無參數版本一模一样,那么這類地址在 URL 發現层面几乎没有意义,只是徒增抓取负担。
有没有真實的搜尋需求
可以结合站内搜尋词、外部是否有連結指向该组合、服務器日誌里參數地址的實际訪問量来判断。有人搜、有外鏈、有轉化的组合,才值得保留成可發現的入口。
是否只是同一批结果的排序
“按價格排序”“按销量排序”通常不产生新内容,属于典型可以收口的地址類型。
让入口收口的几種做法
- robots.txt 屏蔽:适合明确不想被抓的目錄,但要记住,Disallow 只阻止抓取,並不等于阻止 URL 被外部連結带入發現环节。它常常只是“抓到了也拿不到内容”,不能当作唯一手段。
- canonical 指向無參數版本:告诉搜尋引擎哪個才是主地址,减少重复入口的分散。
- 内鏈只保留少數维度:把真正有價值的维度做成静態路径,例如 /phone/apple/,其余组合交给頁面内的篩選控件,不生成可抓取的連結。
- 排序、视图切換用交互完成:尽量不产生新的可抓地址,同时也要清楚,JS 渲染出来的連結是否能被走到,取决于搜尋引擎的渲染能力,不宜完全依赖。
- Sitemap 只放精選:把少數高價值參數頁寫進站点地图,其余靠站点结构自然消化。
服務器侧同样會影响發現质量
參數頁大多是即时查询,响應偏慢。搜尋蜘蛛的抓取額度有限,慢响應會拖長每次抓取的時間,等于變相挤压了其他頁面的發現机會。给常用的參數组合做缓存、限制翻頁深度上限、無结果时返回 404 或 410 而不是一個空壳 200,都能让抓取节奏更干净。
上线後的检查顺序
- 抽样對比參數頁與無參數頁返回的 HTML,確認是否存在真實差异;
- 拉一段服務器日誌,看參數地址在總抓取量里占多大比例;
- 核對 robots.txt、canonical、内鏈三處規則是否互相矛盾;
- 观察抓取高峰时段服務器响應是否明顯變慢。
URL 發現的關键,不是让搜尋蜘蛛看到更多地址,而是让值得被看到的地址更容易被走到。