现场是这样的。从旧教程里抄了一段 robots.txt,里面有 Host: https://www.example.com,不确定现在的引擎还认不认,也不敢乱删。

把日志和配置对完,能解释这个现象的基本就这几处。Host 是 Yandex 的历史指令,Google 和百度都不读;同一份文件里重复声明不同主机名会引起歧义;指令位置不对,被当成未知字段整行丢弃。

先检查文件里都有哪些非标准指令

grep -iE 'host|clean-param' robots.txt

接着删除对目标引擎无效的旧指令

sed -i '/^Host:/d' robots.txt

保留通用规则并重新验证

curl -s https://www.example.com/robots.txt

白天有业务在跑,能验证的部分都压到了晚上做。

当时还开着另一个排查窗口,两边日志对照着看才定位到。

别只看报错消失,验证要多做一步。robots 内容变短,各引擎的抓取状态不变,没有出现新的报错,抓取量维持原有水平。

提醒一点。Clean-param 同样只对 Yandex 有效,参数去重还是得靠 canonical 和站点自身的参数配置,光在 robots 里删参数不会让重复页面消失。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。

作者 9823189