robots.txt 是网站根目录的一个 500 字节小文件,要么啥也没做、要么一夜之间毁掉你的收录。大多数生成器给的默认版本是 OK 的。从老博客拷贝来的「聪明」版本,才是独立站不小心告诉 Google「忘了我吧」的元凶。
问题背景
robots.txt 是控制爬取的文件,放在域名根目录。它告诉爬虫哪些路径可以抓。关键:Disallow 不是「不要收录」,是「不要爬」。一个被 robots.txt 屏蔽的页面仍然可能被收录(只剩 URL,没内容),只要别处有链接指过去。真正阻止收录的工具是 <meta name="robots" content="noindex">——不是 robots.txt。
判断标准
- 刚接手或生成了一份 robots.txt,不确定对不对。
- Search Console Pages 报告里出现「Blocked by robots.txt」。
site:你的域名搜出来的结果描述是「由于该网站的 robots.txt 限制,无法提供描述」。- 加了 Disallow 想「藏」掉某些页面,结果它们还是被收录了。
快速结论
一个典型独立内容站的 robots.txt 三行就够了:User-agent: *、Allow: /、Sitemap: https://你的域名/sitemap.xml。只屏蔽你真的不想被爬的路径(admin、cart、search)。要阻止收录,用页面里的 <meta name="robots" content="noindex">,不是这里的 Disallow。
实操步骤
- 浏览器打开
https://你的域名/robots.txt。如果 404,说明没在提供这个文件——多数静态主机只要框架把 robots.txt 放在 public 目录里就会自动暴露。 - 确认开头是
User-agent: *,并包含Sitemap: https://你的域名/sitemap.xml(完整 URL,不要相对路径)。 - 决定要不要屏蔽什么。常见可屏蔽:
/admin/、/cart/、/api/、站内搜索/?q=。常见不要屏蔽:/static/、/_next/、/assets/、sitemap 路径、CSS/JS。屏蔽这些会让 Google 渲染页面失败。 - 想让爬但不想收录的页面(thank-you 页、内部重复页),用 HTML 里的
<meta name="robots" content="noindex">,不是 Disallow。Disallow + noindex 会冲突——爬不动就读不到 noindex。 - 在 Search Console -> 「robots.txt Tester」(仍在 legacy 工具里)测试。粘几个候选 URL,验证是否按预期允许 / 屏蔽。
- 改完 robots.txt 后,对首页申请一次 indexing,提醒 Google 重新抓 robots.txt。这个文件最多缓存 24 小时,不要指望改完瞬间生效。
容易踩的坑
- 用
Disallow: /「藏」一个公网可达的 staging 站。只要有人贴了链接,URL 仍会被收录(只是没内容)。staging 应该上 HTTP auth。 - 屏蔽 CSS、JS、
/_next/、/static/、/assets/目录。Google 需要它们来渲染页面,屏蔽会伤排名。 - 为了让页面 noindex 而 Disallow 它。Disallow 不去除收录——只是不让爬。URL 仍可能出现在结果里,没有描述。
- 忘了写
Sitemap:行。不致命——你在 Search Console 也提交了 sitemap——但加一行没坏处。 - 把另一个站(特别是 WordPress)的 200 行 robots.txt 整段拷过来。在非 WordPress 站上屏蔽不存在的路径无害,但说明你没在控制自己的文件。
这篇适合谁
从来没打开过自己 robots.txt 的人,或刚在 Search Console 看到「blocked by robots.txt」警告的人。
这篇不适合谁
需要按 user-agent 做精细爬取管理的企业站点。这篇假设你希望大部分内容都被爬。
FAQ
- robots.txt 和
noindex区别?: robots.txt 控制爬取——Google 抓不抓页面。noindex控制收录——抓到之后展不展示。两层不同的东西,Disallow + noindex 还会冲突,因为爬不动就读不到 noindex。 - 要屏蔽站内搜索结果页吗(
/?q=...)?: 内容站一般要。站内搜索内容薄,还会产生无穷 URL 变体。Disallow: /search/或者你搜索 URL 实际的模式。 - robots.txt 能写多个 sitemap 吗?: 能,写多行
Sitemap:就行。按语言或内容类型拆 sitemap 时很有用。Google 会读所有列出的。 - robots.txt 改完多久 Google 知道?: Google 最多缓存 24 小时。改完一般 1-24 小时内反映到爬虫行为。可以对首页申请一次 indexing 推一下刷新。