事情本身不复杂,线索都在日志里。WordPress 6.7 升级后 wp-sitemap.xml 打开是空白,状态 200 长度 0,换主题、停插件都没恢复,GSC 报无法读取站点地图。
第一反应是「伪静态规则把 wp-sitemap.xml 当成普通页面处理」,验证下来不成立。
排查方向其实有限,先把可能性排一排。主题在 template_redirect 里提前 exit,sitemap 请求被截断。还有一种是某个插件把 wp_sitemaps_enabled 过滤成 false。
另外,输出缓冲被清空,内容没有真正写出去。
第一件事是看响应头和内容长度
curl -s -o /dev/null -w "%{http_code} %{size_download}\n" https://www.example.com/wp-sitemap.xml
再往下确认 sitemap 功能是否被关掉
add_filter('wp_sitemaps_enabled', '__return_true');
然后检查伪静态规则有没有拦这个路径
location = /wp-sitemap.xml { try_files $uri $uri/ /index.php?$args; }
等前面都确认过,再用 WP-CLI 重建重写规则
wp rewrite flush --hard
当时还开着另一个排查窗口,两边日志对照着看才定位到。
同一份数据我导出了两份,一份留底,一份拿来试。
改完先别撤,确认这几项。wp-sitemap.xml 返回 200 且长度超过 1KB,GSC 能正常读取子 sitemap 列表。
容易忽略的是,空白页大多是主题或插件的 exit 造成的,先停掉 template_redirect 里的自定义逻辑。监控比日志更早给出信号,事后回看经常能提前半小时发现异常。
