先把当时的情况摆出来。日志里有大量状态 200、响应体长度为 0 的记录,路径都是正常文章,GSC 里这些页面迟迟不进索引,反复被抓却没有任何变化。
真正麻烦的地方在于,几个原因的现象几乎一样。PHP 致命错误被关闭了显示,输出为空但状态仍是 200。另一种情况是缓存插件返回空缓存文件,没有回源。
还有一种情况,对象存储回源失败,返回空内容且未改状态码。
上来先按响应大小排序找出空响应
awk '$9==200 && $10<100 {print $7,$10}' access.log | head -20
直接请求复现并看返回体长度
curl -s -o /dev/null -w '%{http_code} %{size_download}' https://www.example.com/a/
剩下的就是清掉缓存目录后重新生成
rm -rf /www/wwwroot/site/wp-content/cache/*
别只看报错消失,验证要多做一步。相同地址返回的响应体恢复正常长度,日志里 0 字节记录消失,页面重新进索引。
空响应带 200 是最糟的组合,蜘蛛会把它当成有效页面反复抓取,既浪费预算又拿不到任何内容。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。