问题出现得很突然,日志倒是留得挺全。清理站内重复内容,用脚本把 800 篇阅读量低于 50 的旧文删除并返回 404。三天后索引报告从 1.1 万涨到 1.3 万,删掉的页面还在,另外多出一批之前没见过的地址。
刚开始盯着「列表页总数变了,后续分页 URL 错位,多出一批新地址」,折腾了半个多小时,排掉了。
原因不止一个,得分开看。只删了数据库记录,归档页和标签页仍输出这些文章的摘要与链接。还有一种是sitemap 缓存里还留着旧地址,重新生成前一直被提交。
少数情况下是404 页套用了首页模板,正文带着全站链接被当成新入口。
第一件事是看多出来的地址是什么形态
site:www.example.com -inurl:article
然后确认删除页真的返回 404
curl -sI https://www.example.com/article/old-123 | head -2
随后清理标签与归档模板里的残留
DELETE FROM wp_term_relationships WHERE object_id IN (SELECT ID FROM wp_posts WHERE post_status='trash');
剩下的就是重建 sitemap 并提交新版本
php bin/build-sitemap.php --out=/data/www/sitemap.xml
怎么算真的好了,看的是同一批现象。一周后多出来的地址逐步消失,删除页稳定返回 404,索引量回落到删文前水平减 800。
这里还有个坑。删内容不是删记录,模板、缓存、sitemap 三处都要同步,否则删除动作反而制造新地址。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。
