这个坑值得记一笔。站点同时装了 SEO 插件和页面缓存插件,文章页 head 里出现了两条 meta robots,一条是 noindex,follow,一条是 index,follow。百度把这批页面判成禁止索引,一周里索引量掉了六千。Google 侧暂时没动静,只有百度报错。

刚开始盯着「模板里还手写了一行 robots,加起来一共三条」,折腾了半个多小时,排掉了。

原因不止一个,得分开看。两个插件各自输出 meta robots,谁也不让谁;缓存插件把测试环境生成的 noindex 页面缓存到了生产;移动版页面单独输出了一份 robots,和桌面版不一致。

第一件事是看页面上到底输出了几条

curl -s https://www.example.com/p/1024 | grep -o '<meta name="robots"[^>]*>'

接着关掉缓存插件里那项自动输出,只保留 SEO 插件

grep -rn 'name="robots"' wp-content/plugins/ | head

再往下清理页面缓存和对象缓存,避免旧标签继续输出

wp cache flush

复检桌面版与移动版是否一致

curl -s -A 'Mozilla/5.0 (iPhone)' https://www.example.com/p/1024 | grep -c 'name="robots"'

改完先别撤,确认这几项。页面上只剩一条 index,follow,两周后百度的索引量回到掉之前的水平。

提醒一点。两条冲突的 robots 不同引擎处理不一样,Google 取最严格的那条,百度直接判冲突,谁都不保证按你想的执行。线上能稳定复现的问题都不算难,难的是只在大流量下才出现的那种。

作者 9823189