站点运营

站点运营:站内搜索结果页自查,别让蜘蛛在关键词组合里绕圈

站内搜索页往往能生成成千上万个参数组合 URL,蜘蛛一旦钻进去,抓取预算就会被大量消耗在无收录价值的页面上,还会给服务器带来额外压力。这篇文章梳理如何通过日志、Sitemap 和内部链接排查站内搜索页的抓取情况,并给出屏蔽、收敛与保留高价值聚合页的具体做法。

站点运营

站点运营:站内搜索结果页自查,别让蜘蛛在关键词组合里绕圈

很多站点都会有站内搜索功能,用户输入关键词就能找到内容,体验上没问题。但对搜索引擎来说,搜索页是一类比较麻烦的地址:一个关键词一个 URL,加上排序、筛选、翻页参数,组合起来几乎是无穷的。如果缺少约束,蜘蛛很容易把大量时间花在这些页面上。

站内搜索页为什么容易被蜘蛛盯上

常见原因有三个。第一,搜索框通常出现在每个页面的头部或侧边,链接随处可见;第二,搜索页本身会自动生成大量内部链接,指向站内文章,形成一张不断扩张的链接网;第三,同一个搜索页可以带不同参数反复访问,蜘蛛会认为这是新地址。三者叠加,结果就是抓取请求大量集中在搜索页上。

带来的影响也比较直接:真正需要被收录的内容页抓取频次下降,服务器要处理更多动态查询,日志里塞满相似请求,分析时很难看清真实情况。

自查:先确认蜘蛛到底抓了多少

不要凭感觉判断,先用数据确认。可以按下面的顺序看一遍:

  • 在服务器访问日志里筛出搜索路径(比如 search、?q=、?keyword=、?s= 这类特征),统计近一周的抓取次数和占比;
  • 看这些请求的状态码分布,是否有大量 200、也有 302 或 5xx,5xx 往往说明动态查询把服务器压出了问题;
  • 用站内搜索页的地址反查收录情况,确认是否已经有搜索结果页进了索引;
  • 检查 Sitemap 里是否混进了搜索页地址,这种情况要优先修掉;
  • 翻一下栏目模板和文章模板,看搜索框的链接是不是全站输出,有没有给搜索链接加 rel 属性或做收敛。

如果搜索结果页的抓取量占全站的一半以上,基本可以确定需要处理了。

处理思路:按页面类型分开对待

纯功能型搜索页

只服务于用户查找、本身没有独立内容价值的搜索页,通常建议不让它进入索引。这里有一个容易踩的坑:如果直接在 robots.txt 里屏蔽搜索路径,蜘蛛就看不到页面里的 noindex 标签,也就无法按 noindex 处理;反过来,如果先用 noindex 让页面退出索引,再用 robots.txt 屏蔽,逻辑上更稳妥,但前提是页面确实已经不再需要被抓取了。两种手段不要同时上,避免互相干扰。

有内容价值的聚合页

有些站点的搜索页其实是聚合页,比如按品类、按主题整理的列表,本身有稳定的标题、简介和一批固定结果。这类页面如果确实能解决用户问题,可以考虑做成静态或半静态的固定地址,配好标题、描述和规范地址,再让它正常参与收录。判断标准很简单:这个页面会不会被用户主动分享、反复访问,而不是只能靠输关键词才能到达。

已被收录的旧搜索页

如果发现搜索结果页已经进了索引,不要急着一次性全删。先确认这些页面有没有外链或内链指向,再决定是让它随抓取自然失效,还是保留一个提示页面做跳转。同时要停止继续生成新的可索引搜索地址,否则清理速度赶不上生成速度。

内部链接与接口也要管住

页面层面的设置只是一半,另外一半在链接和接口上:

  • 搜索链接尽量写成表单提交或按钮触发,减少可被直接跟随的 a 标签;
  • 搜索结果页里的分页链接,避免把参数无限拼接下去;
  • 搜索建议、下拉补全这类接口,注意别暴露成可批量请求的公开地址;
  • 热门搜索词、历史搜索这类模块,如果输出的是固定词表,可以做成固定地址;如果每次都不一样,最好不要直接输出链接;
  • 给搜索功能加上频率限制,既保护服务器,也避免被异常请求刷量。

验证与长期维护

调整完不要就此不管,隔一两周再回日志里看一次,确认搜索路径的抓取量确实降下来了,同时核心内容页的抓取次数有没有回升。如果发现某个搜索地址仍然被频繁访问,顺着它的来源查一下是哪个页面在输出链接。

站内搜索是给用户用的工具,不是给蜘蛛准备的入口。把它管好,抓取预算才能落到真正需要被看到的内容上。

最后提醒一句:搜索页的处理方式没有统一答案,关键看它对你站点是功能还是内容。功能就收敛,内容就规范,别让它处在两者之间的模糊状态。