这个坑值得记一笔。主题在搜索无结果时走进异常分支,页面返回 500,错误日志里是 Trying to get property of non-object。Search Console 服务器错误一周涨了八百条,抓取量跟着下滑。试过重启 PHP-FPM,无效。

刚开始盯着「蜘蛛高频访问冷门搜索词,反复触发同一条异常」,折腾了半个多小时,排掉了。

这类报错背后常见的原因有几处,逐个排除就行。空结果时查询返回 null,模板直接取属性触发致命错误;错误被页面缓存插件记录成缓存内容,后续请求继续返回 500;500 会让蜘蛛降低整站抓取频次,不只是这一条 URL。

复现无结果的状态码

curl -s -o /dev/null -w "%{http_code}\n" "https://www.example.com/?s=zzzz-no-result"

接着在模板里判空再输出

if (have_posts()) { get_template_part('loop'); } else { get_template_part('none'); }

然后清掉已经缓存的错误页

wp cache flush && rm -rf /var/www/html/wp-content/cache/page/*

等前面都确认过,再确认错误日志不再增长

tail -50 /var/log/php-fpm/error.log | grep -c 'non-object'

改完先别撤,确认这几项。无结果页稳定返回 200,Search Console 的 5xx 报告停止增长,抓取量在三天后回到原水平。

容易忽略的是,搜索页出 5xx 的影响比普通文章大,因为蜘蛛会把它当成整站稳定性问题,修完记得盯几天抓取统计。拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。

作者 9823189