站内搜尋頁和篩選頁,通常是站点里數量最多、增長最快的一類 URL。用戶点几下就能生成一個新地址,爬虫顺着内鏈也很容易一路抓下去。要不要让搜尋引擎收錄這些頁面,很多站点並没有明确结论,结果往往是索引里堆了大量低價值地址,真正希望被看到的頁面反而被稀释。
先分清两類自動生成的頁面
一類是站内搜尋结果頁,地址里带查询參數,比如 /search?q=關鍵詞。另一類是列表篩選頁,比如在商品或文章列表上叠加颜色、價格、排序、分頁等條件後产生的 ?color=red&size=m&sort=new。前者内容随查询词變化,後者随參數组合變化,两者共同点是:URL 由程序批量产生,頁面之間的差异可能非常小。
放開收錄的主要代價
- 组合爆炸。几個篩選條件相乘,就能产生成百上千個地址。收錄如果放開,索引規模會快速膨胀,而大部分组合並没有真實的搜尋需求。
- 重复内容。同一批结果用不同排序、不同參數展示,正文高度相似。搜尋引擎需要在多個近似頁面中做取舍,收敛過程會消耗額外時間。
- 抓取消耗。爬虫把時間花在這些頁面上,留给其他新内容或更新内容的抓取次數就會變少,收錄速度可能因此變慢。
判断该留還是该收,看三点
- 是否有獨立搜尋需求。像“某城市某品類”這類篩選结果,如果用戶确實會直接搜尋,保留一個稳定的落地頁是有意义的;纯排序、纯分頁參數通常没有這個價值。
- 内容是否稳定。參數生成的结果如果長期不變、有固定标题和摘要,可以视作正常頁面;如果只是临时查询结果,頁面内容随用戶輸入而變,就不适合進入索引。
- 是否可被穷举。能被穷举的组合數量可控,可以挑出少數有代表性的頁面;组合數量不可控时,優先收口。
收口的几種做法
常见手段有三種,但适用场景不同。用 noindex 时,頁面仍需要能被爬虫抓取,否則标簽看不到,收口不會生效。用 robots.txt 屏蔽时,URL 不再被抓取,但已经收錄的頁面不會因為屏蔽而立刻消失,反而可能因為看不到 noindex 而長期留在索引里。用 canonical 时,是把參數頁指向對應的主頁面,属于“合並信号”而不是“拒绝收錄”。
如果頁面已经被收錄,想让它登出索引,通常先放開抓取、加上 noindex,等確認不再出現後再考虑用 robots.txt 减少抓取压力,顺序反了容易卡住。
除此之外,還可以從連結侧减少入口:篩選控件尽量用表單或按钮触發,不要生成大量可被跟随的静態連結;站内搜尋入口加在顯眼位置即可,不必把每個查询结果都做成可抓取的連結。
調整之後怎么观察
改動不會立刻反映在索引里。可以分几步看:先確認參數頁是否仍被抓取,再观察索引覆盖中相關 URL 的數量變化,同时留意站内有效頁面的抓取次數是否回升。观察周期通常以周為單位,期間不要频繁改動規則,以免判断失去參照。收錄數量本身不是目标,让有内容、有需求的頁面被稳定發現,才是這套取舍的意义。