站内搜索是用户体验的一部分,但对搜索引擎蜘蛛来说,它往往是一条通往无穷页面的入口。搜索页、筛选页、排序页叠加参数之后,URL 数量可能成倍增长,而这些页面的正文大多是重复的标题与摘要,没有独立价值。自查这件事的目标不是把搜索功能关掉,而是别让蜘蛛把抓取预算花在这里。
先确认蜘蛛是否真的在抓搜索页
打开服务器日志或 CDN 日志,用 /search、?q=、?keyword=、?s= 这类关键词过滤,看最近一周的抓取记录。重点看三个数字:请求总数、不同 URL 数量、返回状态码分布。如果搜索页请求占了整站抓取量的明显比例,或者出现了大量 4xx、5xx,以及返回 200 但内容为空的结果,就值得处理。
常见处理方式与取舍
robots.txt 屏蔽
在 robots.txt 里 disallow 掉搜索路径,能较快减少抓取,服务器压力也会降下来。代价是蜘蛛看不到页面上的 noindex 标签——被屏蔽的 URL 如果此前已被收录,可能会长期留在索引里,而你无法再通过标签提醒它移除。屏蔽之前,先确认这些 URL 目前是否已有收录量。
允许抓取但加 noindex
如果搜索页已经被收录,或者收录情况不明,可以先允许抓取,在页面 head 中输出 noindex,follow,让蜘蛛读到指令后再离开。等索引清理得差不多,再考虑是否退回 robots 屏蔽。注意 noindex 要真实出现在 HTML 源码里,依赖 JS 注入的方式在部分情况下并不可靠。
服务端与参数层面的限制
把空结果页、超长关键词、特殊字符组合直接返回 404 或 410;对无结果的搜索页不要输出大量推荐内容;限制结果页的翻页深度,比如只保留前几页可访问。这些做法同时也在减少无效页面被外部链接放大的可能。
容易被忽略的几个细节
- 搜索表单如果是 GET 提交,参数会自然进入 URL,尽量使用简短固定的参数名。
- 搜索结果里指向内容页的链接建议加 nofollow,避免蜘蛛顺着结果页一层层往外爬。
- 别在页脚、侧栏放“热门搜索”这类自动生成的链接区块,它们相当于给搜索页做了内链。
- 如果搜索页有分页,分页 URL 同样要纳入处理范围,不能只处理第一页。
- 站点地图里不要出现搜索页 URL,生成 sitemap 时顺手过滤即可。
一份可执行的自查清单
- 在日志中统计搜索页请求占比与状态码分布。
- 确认搜索引擎当前收录了多少条搜索页 URL。
- 确定策略:屏蔽、noindex,还是分阶段两者结合。
- 检查搜索表单的参数名,以及结果链接是否加了 nofollow。
- 清理页面模板中自动生成的热搜、相关搜索内链。
- 过滤站点地图与站内 XML 输出中的搜索页地址。
- 处理完成后持续观察日志与索引量的变化。
搜索页本身不是错误,它只是不该成为蜘蛛的主要入口。把入口收窄,把抓取留给真正的内容页。
如果站点规模较大,处理之后可以隔两周再回看一次日志,确认抓取结构确实发生了变化,而不是改了一次模板就放着不管。