现场是这样的。文章地址改版后做了 301,推送脚本读的还是数据库里的旧 guid,IndexNow 每天收到一批已经跳转的地址,真正的新地址一次都没推。

中间走过弯路,把「去重按旧 URL 做,新旧地址被当成两条记录」当成主因,改完现象没变。

原因不止一个,得分开看。推送脚本取的是未更新的旧字段,改版后没同步;队列里积压的历史任务在改版后继续执行;301 后没有在新地址上登记推送时机。

第一件事是抽一条推送记录确认地址

grep -o 'https://www.example.com/[^ ]*' indexnow.log | tail -20

直接请求确认是否 301

curl -sI https://www.example.com/old-post-1/ | head -3

再往下把推送源改成 canonical 地址

SELECT ID, post_name FROM wp_posts WHERE post_status='publish' LIMIT 20;

等前面都确认过,再清理队列里的旧任务

wp option delete indexnow_queue

别只看报错消失,验证要多做一步。推送日志里只剩 200 的新地址,IndexNow 返回 202 后 Bing 抓取的是改版后的页面,旧地址的重复提交停止。

容易忽略的是,推送源必须和 canonical 一致,改版期间最容易把流量推给一个只会跳转的地址。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。

作者 9823189