有人为了图省事,在 robots.txt 里加了一行 noindex: /tmp/ 想让测试页不进索引。一个月后搜索结果里还是能搜到这些页面,文件本身能被正常读取,也没有被其它规则覆盖。
这类报错背后常见的原因有几处,逐个排除就行。robots.txt 只支持抓取控制 没有 noindex 这条指令;页面本身没有输出 meta robots 蜘蛛读完文件后照常抓取;测试页没有做访问限制 任何人拉到链接都会被收录;sitemap 里混进了这些测试地址 进一步推动抓取。
动手时先确认文件里到底写了什么
curl -s https://www.example.com/robots.txt | grep -in noindex
然后把控制改到页面级标签上
<meta name="robots" content="noindex, nofollow">
随后让测试目录返回 404 或加访问鉴权
location ^~ /tmp/ { auth_basic "restricted"; auth_basic_user_file /etc/nginx/.htpasswd; }
从 sitemap 里剔除测试地址
grep -v '/tmp/' sitemap.xml > sitemap.clean.xml
改完先别撤,确认这几项。改成页面级标签并给测试目录加鉴权后,这些地址在四周内从索引里消失,也不会再被外部链接带进来。
补一句。robots.txt 里只有抓取相关的指令,任何写在里面的 noindex 都会被直接忽略,这是很常见的误解。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。
