站点运营

站点运营:搜索蜘蛛的URL发现,从站内搜索结果页谈起

站内搜索框常被当成纯前端功能,但它会持续生产带参数的URL。本文梳理搜索结果页会生成哪些地址、放开抓取与 Disallow、noindex 三种处理方式各自的代价,以及如何把搜索需求沉淀为固定栏目页,减少无效抓取。

站点运营

站点运营:搜索蜘蛛的URL发现,从站内搜索结果页谈起

很多站点把站内搜索当成一个纯前端功能,做完搜索框就不再管它。但从URL发现的角度看,搜索结果页是一台不断生产新地址的机器:用户搜什么词,就组合出什么地址,这些地址一旦被链接、被分享、被蜘蛛顺着抓取,就可能进入抓取队列。运营需要先弄清楚它会产生什么,再决定怎么处理。

站内搜索页会生成哪些URL

不同程序实现不同,常见的形态大致有这几类:

  • 带查询参数的地址,例如以 q、s、keyword、search 为参数名,后面接用户输入的内容;
  • 搜索结果的翻页地址,在参数之后再叠加 page 或 p;
  • 带筛选与排序的地址,例如价格区间、时间范围、排序方式;
  • 空结果页,以及不带参数直接访问的搜索首页;
  • 程序把热门词做成的搜索聚合页或标签页。

前两类是无限组合,后两类是有限集合,处理思路完全不同:无限组合要收敛,有限集合反而可以考虑纳入正常结构。

三种常见处理方式,各有代价

直接放开

优点是蜘蛛能抓到内容,用户分享的链接也能正常打开。代价是参数组合被大量抓取,占用服务器与抓取配额,而且搜索结果页内容重复、质量不稳定,通常不适合作为落地页。

在 robots.txt 里 Disallow

这能立刻减少抓取量,是很多站点的第一反应。但有一个容易被忽略的副作用:被禁止抓取的地址,蜘蛛看不到页面里的 noindex,也无法确认该页不该收录。如果这些地址此前已经被收录,可能会较长时间留在索引里,展示的还是旧快照。

允许抓取但加 noindex

相对稳妥的做法是让蜘蛛进来看到 noindex 标签或对应的响应头,逐步把已有收录清出去,同时用参数规范和页面上的内链策略控制爬虫深度。代价是短期内抓取量会上升,需要结合日志确认没有异常膨胀。

把搜索需求引导回结构化入口

站内搜索反映的是用户的真实需求。与其让这些需求散落在参数地址里,不如把它们沉淀成正式栏目:把搜索量稳定的关键词做成专题页、分类页或聚合列表页,用常规内链指向这些页面。这样既满足了用户,也把可抓取、可收录的地址收敛到了有限集合里。

判断标准很简单:如果某个搜索词值得用户反复搜,它就值得有一个固定URL。

日常要盯的几个点

  • 日志里搜索页的抓取占比,如果长期偏高,说明入口太多或参数没有收敛;
  • 搜索结果页是否被搜索引擎收录,抽查几个典型参数组合;
  • 热门搜索词是否已有对应的静态栏目页可以承接;
  • 搜索结果的翻页参数是否与内容页翻页混用,避免蜘蛛在搜索页之间绕圈。

站内搜索本身没有错,它是用户体验的一部分。问题在于运营者是否清楚它会生产多少URL、这些URL最终去了哪里。把这一层想明白,URL发现这件事就少了一个容易被忽视的漏洞。