WooCommerce 的空分类页返回 200,正文只有一句暂无商品,Search Console 覆盖率报告里这类页面被标成软 404,三个月累计 1200 条,给页面加 noindex 后报告没减少。

一开始怀疑是「商品列表由 JS 渲染,蜘蛛拿到的是空壳」,查了一圈,方向不对。

把日志和配置对完,能解释这个现象的基本就这几处。空分类返回 200 且正文过短,被判定为软 404。还有一种是筛选参数组合出大量空结果页,同样返回 200。

少数情况下是分页超出范围返回空白页而不是 404。

第一件事是看空分类页的状态码和正文长度

curl -s -o page.html -w "%{http_code} %{size_download}\n" https://www.example.com/product-category/empty/

接着确认页面里有没有商品条目

curl -s https://www.example.com/product-category/empty/ | Select-String -Pattern "product" -SimpleMatch

然后让空分类直接返回 404

add_action('wp', function(){ if (is_product_category() && !have_posts()) { global $wp_query; $wp_query->set_404(); status_header(404); } });

等前面都确认过,再把超出范围的分页也改成 404

curl -s -o /dev/null -w "%{http_code}\n" "https://www.example.com/product-category/tools/page/999/"

改完先别撤,确认这几项。空分类和超范围分页都返回 404,GSC 里软 404 数量两周内开始下降,有效分类页的抓取不受影响。

这里还有个坑。软 404 的本质是状态码和内容不一致,noindex 只挡住收录,改状态码才算真正清理。这类问题最好一次改到位,反复小改反而容易把原因搅混。

作者 9823189