站点地图里 800 条商品地址已经返回 410,删除后第二天 sitemap 又出现同样 800 条,抓取工具每天照抓,日志里全是 410。日志里能对上时间点,这种反而好排。
生成器读的是商品表的全部记录,没有按状态过滤,下架商品仍被当成有效页。410 是页面层返回的,生成任务看不到这个状态。这一点先确认清楚,后面就不用反复试。
wp sitemap rebuild wp db query "SELECT ID FROM wp_posts WHERE post_status='trash' LIMIT 20;" curl -s https://example.com/sitemap.xml | grep -c "<loc>"
围绕「sitemap 410 链接」排查时,命令行跑一遍比在面板里点十次有用,面板会替你做掉不少隐式操作。线上出问题先对时间点,跟发布、备份、任务执行的时刻排一排,能省掉一半功夫。
日志级别临时调高可以,记得改回去,长期开着既占磁盘又掩盖真问题。权限不要一口气开到最大,先加到够用再往上试,范围小才好收。
处理上按这个顺序:先导出 sitemap 里的 URL,和服务端日志的 410 列表对一遍;生成规则里加上 post_status 过滤,只收 publish 状态;对已删除的 ID 建排除表,重新生成后抽查条数。
结果对不对很好判断,重新生成的 sitemap 条数减少 800,随机抽 10 条返回 200。
