报错是这么冒出来的。新文章发出去立刻调 IndexNow,接口回 202 已接受,可七天后必应里还是搜不到,站点地图里这几条 URL 的状态一直停在已发现。

中间走过弯路,把「接口返回 202 只代表收下,索引调度仍要看页面质量与站点评级」当成主因,改完现象没变。

真正麻烦的地方在于,几个原因的现象几乎一样。提交的 URL 带了 utm 参数,和页面上 canonical 的地址不是同一个,被当成两个页面。另一种情况是key 文件放在子目录,keyLocation 指向的地址返回 404,校验没通过整批作废。

还有一种情况,提交频率太高,同一批 URL 一天推了十几次,被认为无效重复而丢弃。

上来先核对提交地址与 canonical 是否一致

curl -s https://www.lu0.cn/indexnow?url=https://www.lu0.cn/1.html

然后确认 key 文件可访问且内容与 key 相同

curl -s https://www.lu0.cn/9f8e7d.txt

随后用接口回执里的 requestId 对照提交日志

grep indexnow /var/log/nginx/access.log | awk '{print $7}' | tail -20

等前面都确认过,再把新文章按发布节奏分批推,每天只推当天新增

恢复的判定其实很直接。一周后必应对这批 URL 的抓取时间集中在发布后两小时内,索引状态从已发现变成已编入索引。

容易忽略的是,202 是收件回执不是收录承诺,真正决定抓不抓的还是页面本身的更新价值和站点整体抓取预算。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。

作者 9823189