记录一下那天晚上的排查过程。Key 文件按规范放在站点根目录,浏览器能打开,IndexNow 接口却一直返回 403,用 curl 带 UA 请求发现被安全规则拦成了可疑文件扫描。

刚开始盯着「文件被 CDN 缓存成 404,边缘与源站状态不一致」,折腾了半个多小时,排掉了。

原因不止一个,得分开看。WAF 把根目录下的 32 位随机文件名判成扫描特征。还有一种是Key 文件返回的 Content-Type 是 text/html。

少数情况下是Key 放在子目录,接口只会在根目录查找。

直接请求 key 文件看状态

curl -sI https://www.example.com/8f3a9c2e7b1d4f6a9c0e2b4d6f8a1c3e.txt

随后确认返回类型与内容

curl -s https://www.example.com/8f3a9c2e7b1d4f6a9c0e2b4d6f8a1c3e.txt

给该路径加 WAF 白名单

SecRule REQUEST_URI '@beginsWith /8f3a9c' 'id:2001,allow'

等前面都确认过,再重新提交一条 URL 验证

curl -s 'https://api.indexnow.org/indexnow?url=https://www.example.com/post-1/&key=8f3a9c2e7b1d4f6a9c0e2b4d6f8a1c3e'

中途换过一次思路,把范围缩到最小的那一层,反而快了。

改完先别撤,确认这几项。key 文件返回 200 且正文与文件名一致,IndexNow 接口返回 202,日志里出现 Bingbot 的抓取请求。

补一句。Key 文件是个普通文本文件,安全规则越严越容易误伤,提交前先用 curl 完整走一遍。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。

作者 9823189