robots.txt是网站根目录下的独立纯文本文件,用于指导爬虫抓取行为;必须通过https://yoursite.com/robots.txt访问且返回200状态码与text/plain类型,否则规则失效。

robots 抓取限制不是在 HTML 里配的——robots.txt 是独立纯文本文件,不能写进 ,也不能靠 JS 动态生成。配错位置、格式或路径,规则就完全失效。
robots.txt 文件必须放对位置且返回 200
爬虫只认一个地址:https://yoursite.com/robots.txt(注意:必须是根域名后直接跟 /robots.txt)。常见失效情况:
- 文件放在
/public/robots.txt或/static/robots.txt→ 返回 404,等同于“无限制” - 用 Nginx/Apache 重写了
/robots.txt请求,实际返回 HTML 页面或跳转 → 爬虫拒绝解析 - 文件名写成
Robots.txt、robots.TXT或robots.txt.html→ 不被识别 - 服务器返回
Content-Type: text/html→ 即使内容正确,主流爬虫也会跳过
验证方式:终端执行 curl -I https://yoursite.com/robots.txt,确认状态码是 200,且响应头含 Content-Type: text/plain。
Disallow 和 Allow 的路径匹配很“傻”,但必须懂
它们只做**前缀字符串匹配**,不支持正则,也不区分目录和文件语义。容易误判的点:
-
Disallow: /admin→ 同时屏蔽/admin、/admin/、/admin-login、/admin.php -
Disallow: /admin/→ 只屏蔽以/admin/开头的路径,/admin-api不受影响 -
Allow: /admin/login.html必须写在Disallow: /admin/之前才有效(规则按顺序匹配,最先匹配的生效) -
Disallow: /*.js$中的$和*仅 Google/Bing 支持,且只允许出现在值末尾;旧爬虫会忽略整行
示例(安全写法):
User-agent: * Disallow: /cgi-bin/ Disallow: /wp-admin/ Allow: /wp-admin/admin-ajax.php
meta name="robots" 只管“进来之后”,不管“让不让进”
它写在 HTML 的 里,作用是告诉爬虫:“你已经抓到这页了,接下来怎么处理”。但它完全不控制访问权限:
- 如果
robots.txt里写了Disallow: /private/,爬虫根本不会请求/private/page.html→ 里面写的<meta name="robots" content="noindex">永远不会被看到 - 想让某页可访问但不索引,删掉
robots.txt的限制,只加<meta name="robots" content="noindex"> - 必须静态输出:Vue/React 在
mounted里用 JS 插入 meta 标签,对爬虫无效 - 检查方法:右键「查看网页源代码」,搜
<meta name="robots">,确保它真实存在于原始 HTML 中
真正要封死,得靠服务端响应头
robots.txt 和 meta 都只是建议协议,恶意爬虫或采集工具根本不读。如果页面含敏感数据,唯一可靠的方式是:
- 服务端判断用户身份,对未授权请求返回
HTTP 403或重定向 - 对已抓取但需下线的页面,用
X-Robots-Tag: noindex响应头(比 meta 更早生效,且可作用于非 HTML 资源) - 不要依赖
robots.txt保护后台路径、API 接口或临时文件 —— 它既不加密,也不鉴权
最常被忽略的一点:改完 robots.txt 后,Google 搜索结果里已有页面不会自动消失;得配合 noindex 或手动在 Search Console 提交移除请求。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











