robots.txt必须放在网站根目录下(如https://example.com/robots.txt)才生效,文件名全小写、纯文本、UTF-8编码、响应头为text/plain且返回HTTP 200状态码;放错路径、改名、加后缀或置于子目录均无效。

robots.txt 文件怎么写才生效
robots.txt 不是 HTML 文件,它必须放在网站根目录下(比如 https://example.com/robots.txt),且只能用纯文本格式。浏览器能打开看,但爬虫只认这个路径和这个文件名——放错位置、改名、加后缀(如 robots.txt.html)或放子目录下,都等于没写。
常见错误:有人在 HTML 页面里加 <meta name="robots" content="noindex">,以为这能替代 robots.txt;其实两者作用不同:robots.txt 控制爬虫能否访问某路径,<meta> 标签控制已抓取页面是否索引,且后者对不遵守规范的爬虫无效。
-
User-agent: *表示规则适用于所有爬虫;若只想限制某一个(如百度蜘蛛),写User-agent: Baiduspider -
Disallow: /admin/禁止访问整个目录;Disallow: /tmp.html禁止单个文件;Disallow: /?id=可屏蔽含特定查询参数的 URL(部分爬虫支持,但非全部) - 允许访问用
Allow:,优先级高于Disallow;例如Disallow: /public/但想放行其中某个文件,可加Allow: /public/logo.png - 不要写
Disallow: /后又写Allow: /index.html——多数爬虫不支持这种嵌套逻辑,会直接跳过整个站点
HTML 页面内怎么控制单页爬虫行为
如果只需控制某几个页面是否被抓取或索引,<meta name="robots"> 是更直接的方式,但它只影响已成功抓取的页面,不能阻止爬虫请求该 URL。
典型用法:
立即学习“前端免费学习笔记(深入)”;
-
<meta name="robots" content="noindex, nofollow">:禁止收录当前页,也不追踪页面里的链接 -
<meta name="robots" content="noindex, follow">:不收录本页,但可以顺着链接继续爬其他页 -
<meta name="googlebot" content="noindex">:仅对 Google 有效;Baiduspider也认name="baiduspider",但兼容性弱,慎用 - 不要混用
noindex和index,如content="noindex, index"——行为未定义,不同爬虫解析结果可能不同
为什么写了 robots.txt 却没效果
最常见原因是爬虫根本没读到它,或者读到了但规则写错了。Google Search Console 和 Bing Webmaster Tools 都提供 robots.txt 测试工具,能模拟爬虫解析结果,比手动猜靠谱得多。
- 服务器返回非
200 OK状态码(如403、404、500)时,多数爬虫会当作“无限制”处理 - 用了大写字母或空格:如
User-Agent:写成User-Agent :(冒号后多空格)或USER-AGENT,部分旧爬虫可能忽略整段 - 路径大小写敏感:Linux 服务器上
Disallow: /PDF/不会挡住/pdf/,要分开写或用通配符(但标准 robots.txt 不支持通配符,只有 Google/Bing 扩展支持$和*) - HTTPS 站点没同步更新 HTTP 版本的
robots.txt:两个协议视为不同站点,需各自部署
robots.txt 和 meta robots 的边界在哪
简单说:robots.txt 是门禁,决定爬虫能不能进门;<meta name="robots"> 是屋内告示,告诉已经进来的爬虫“这间房别拍照”。前者管请求,后者管索引。
- 想彻底屏蔽敏感后台路径(如
/wp-admin/),必须靠robots.txt;只靠meta标签,爬虫仍可能发请求、暴露接口或被恶意扫描 - 登录页、分页第2页、筛选结果页等“内容重复但有必要存在”的页面,适合用
meta加noindex,避免 SEO 冗余,同时保留可访问性 - robots.txt 中的
Disallow不影响页面被其他网站外链引用,也不影响已缓存页面出现在搜索结果中(只是不再更新);而noindex会让页面从搜索结果中逐渐消失
真正要拦住爬虫,得先确认它是否遵守 robots 协议——很多采集工具、监控服务、甚至某些广告平台爬虫直接无视 robots.txt。这时候就得靠服务器层权限控制(如 IP 白名单、登录校验)或前端动态渲染来兜底。



















