curl -s https://example.com/sitemap_index.xml | grep "<loc>"
xargs -n1 curl -o /dev/null -s -w "%{http_code} %{url_effective}" < urls.txt
wp sitemap rebuild
sitemap_index.xml 里列了 6 个子图,其中 3 个打开返回 404,父文件本身返回 200,抓取工具每天来读一次,每次都报子图不可用。先别急着动参数,把报错原文和时间点记下来,顺序反了容易白折腾。
原因不复杂,子图按月份命名,生成器只保留最近三个月,索引文件却还写着半年前的地址。清理脚本删了文件,没有同步重写索引。
围绕「sitemap 子图 404」排查时,命令行跑一遍比在面板里点十次有用,面板会替你做掉不少隐式操作。改完隔一天再看一次,当场正常不代表能稳住。
测试环境和线上的差别,往往就在版本号和那几行被忽略的配置上。线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。
处理上按这个顺序:先把索引里每个 loc 逐个请求一遍,记下 404 的;生成时按实际存在的文件重写索引,别用固定列表;加一条校验,索引里的地址必须返回 200 才写入。
改完只确认一件事:索引里的 6 个子图全部返回 200,抓取工具不再报子图错误。
