站内搜索是用户找内容的快捷方式,但它同时也是搜索引擎最容易批量发现 URL 的地方之一。用户每搜一个词,就可能产生一个新地址。如果不做约束,站点会在不知不觉中把成千上万个搜索页交到搜索引擎手里。
为什么站内搜索结果页容易出问题
- URL 由参数拼接生成,关键词、页码、排序方式组合起来几乎无限。
- 页面正文多是标题和摘要的机械拼接,与分类列表页高度重复。
- 无结果时也常常返回 200,并挂着一句“没有找到相关内容”。
- 结果里可能混入未发布内容、已下线页面或不希望公开的条目。
- 大量低价值地址被反复抓取,真正需要更新的内容反而排不上队。
自查清单
1. 先确认搜索入口的 URL 形式
在站内搜几个不同长度的词,观察地址栏。常见的形态有 ?s=、?q=、?keyword=,也有 /search/ 这类路径式写法,部分站点还会同时存在两种。把实际出现的变体都列出来,后面的规则才有依据。
2. 在 robots.txt 和 noindex 之间选一条
两种思路都可行,但不要同时用又指望某一方生效。用 robots.txt 屏蔽搜索路径,省抓取,但搜索引擎读不到页面上的标签;用页面级 noindex,搜索引擎需要先抓下来才能看到,可控但更消耗一点抓取。站点规模不大时,直接屏蔽通常更干净。
robots.txt 是“别来抓”,noindex 是“抓了也别收录”。选一个执行,并在模板层面统一,别让某些页面屏蔽、某些页面加标签。
3. 检查空结果页与错误处理
无结果时不要只返回 200 加一句提示。可以返回 404 或 410,至少也要在页面上加 noindex,同时给出推荐内容和返回上一层的入口,避免用户卡在一个空页面上。
4. 别让搜索页进 Sitemap 和内链
站点地图、主导航、页脚、文章末尾的“相关搜索”“热门搜索”,都不应该指向搜索结果页。结果列表内部的链接保持正常跟随即可,但搜索页自身不要成为被推荐、被反复引用的入口。
5. 用抓取日志核对效果
在留存好的抓取日志里筛选含搜索路径的请求,看频率和返回状态码。如果蜘蛛仍在大量请求,先检查是不是其他页面还在链过去,或者规则写错、被 CDN 缓存覆盖,而不是急着再加一条规则。
顺带处理两个细节
- 搜索页的标题不要只用“搜索结果 - 站名”。如果这类页面必须存在,至少让标题带上关键词,并与 noindex 一起处理。
- 搜索结果的分页同样由参数生成,翻页会翻出更多地址。能限制页数就限制,能统一到第一页就统一。
什么情况下不必屏蔽
如果筛选组合本身构成了有独立价值的内容——比如商品按类目、材质、用途交叉后形成的落地页——那属于另一套规划:需要稳定的静态路径、独立的标题与描述、足够的真实内容。普通站内搜索不属于这一类,别用同一套参数硬撑。
把搜索页管住,省下的不只是抓取。更重要的是,用户从搜索引擎点进来时,最好直接落在具体内容上,而不是落在一个还要再搜一次的输入框前。