下面按现场排查习惯来写,能直接复制的命令放在代码块里,顺序照做即可。 sitemap 里有三百多个页面源码带着 noindex,提交后 GSC 一直报已提交但被 noindex 排除,有效页面比例被拉低。
拖得越久,排查成本越高,因为现场状态会被后续操作覆盖。
先分清是哪一类原因
- 插件按文章类型全量输出,没有判断页面的索引状态
- 部分页面在模板里单独加了 noindex,sitemap 层完全不知道
- noindex 和 sitemap 同时存在,等于给蜘蛛互相矛盾的指令
按顺序处理
1. 导出 sitemap 里的 URL 清单
curl -s https://www.example.com/sitemap.xml | grep -o '<loc>[^<]*' | cut -c6-
2. 批量检查这些页面的 robots 标签
curl -s https://www.example.com/a/ | grep -i 'name="robots"'
3. 在生成逻辑里过滤掉标记 noindex 的文章 ID
SELECT ID FROM wp_posts WHERE post_status='publish';
怎么确认已经恢复
重新生成后 sitemap 条数减少三百多,GSC 的已提交数与有效页面数基本对齐,排除类提示消失。
容易忽略的地方
反过来也要查:页面想收录却漏出了 sitemap,常见于自定义文章类型只注册了公开属性却没加查询支持。 命令执行完不要只看有没有报错,还要看输出里的计数和状态码是否符合预期。