robots.txt 里写了 Disallow: /*?s=,百度抓取工具按规则屏蔽了搜索页,Google 那边照样抓,日志里 Googlebot 每天抓 3000 条 ?s= 地址。碰到这种情况,我一般先确认改动有没有真的生效。

原因不复杂,Google 支持星号和美元符号通配符,但匹配规则要求星号后面能落到完整路径段,写在问号前面这种形式匹配不到。两家解析器对通配符的实现并不一致。

「robots 通配符不生效」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。改完顺手把文档补一句,省得下次自己重新推一遍。

User-agent: *
Disallow: /?s=
Disallow: /*?s=

监控和日志的时间要对上,时区不一致会多绕很大一圈。临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。

动手前把原文件复制一份带时间戳,出问题立刻换回去,比现场分析快得多。

具体做法是,改成 /?s= 这种明确前缀,再补一条带星号的写法;用两家各自的测试工具分别验证;确认搜索页也加了 noindex,双保险。

最后用这个标准收尾,两家测试工具都显示 ?s= 地址被屏蔽,日志里搜索页请求明显减少。

作者 9823189