测试目录靠响应头做 noindex,上线一周后发现三千个页面全被收录,用 curl 看返回的头部是 X-Robot-Tag: noindex。第一次遇到会往复杂处想,其实漏掉的多是个小前提。

add_header X-Robots-Tag "noindex, nofollow" always;
curl -sI https://example.com/test/ | grep -i robots

响应头名字少了一个 s,抓取工具不认识这个自定义头,直接忽略。头本身返回 200,肉眼扫一遍很难发现这点拼写差异。这一点先确认清楚,后面就不用反复试。

「X-Robots-Tag 拼写」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。

动手前把原文件复制一份带时间戳,出问题立刻换回去,比现场分析快得多。一次只改一处,改完立刻验证,几个改动叠在一起,出问题就说不清是谁导致的。

先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。

具体做法是,先用 curl 看真实响应头名字;改成 X-Robots-Tag,值写 noindex, nofollow;确认 CDN 没有把这个头过滤掉;批量请求抽查状态和头部。

改完照着核一遍,响应头里出现正确的 X-Robots-Tag,抓取工具显示页面不可索引。

作者 9823189