先看现象。搜索页的 noindex 是前端路由挂载后动态插入 meta 的,查看源代码里没有,GSC 抓取后仍把页面收进索引,报告里显示未检测到屏蔽标记。
原因不止一个,得分开看。蜘蛛渲染前就读完 head,JS 插入的 meta 未必被执行。也可能是服务端模板完全没有屏蔽指令。
还有一种情况,部分搜索引擎不支持渲染阶段的 meta 识别。
先看原始 HTML 里有没有 noindex
curl -s 'https://www.example.com/search?q=seo' | grep -ci noindex
随后改到 Nginx 输出响应头
grep -rn 'X-Robots-Tag' /etc/nginx/sites-enabled/
剩下的就是验证响应头生效
curl -sI 'https://www.example.com/search?q=seo' | grep -i x-robots-tag
改之前我把相关日志按时间截了一段存着,事后对时间线用得上。
中途换过一次思路,把范围缩到最小的那一层,反而快了。
怎么算真的好了,看的是同一批现象。响应头生效后重新抓取,搜索页状态变为已排除,索引量一周内开始下降。
补一句。屏蔽指令必须出现在服务端返回的第一份 HTML 或响应头里,靠 JS 补是赌蜘蛛会渲染。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。
