Rudra Analyzer

SEO

robots.txt 与 sitemap.xml 详解(附示例)

网站根目录下的两个小文件,告诉抓取工具哪里可以去,以及你希望哪些页面被发现。本文结合示例说明它们各自的工作方式。

作者:Rudra Techno Team 阅读约 8 分钟
本页内容

网站根目录下有两个普通的文件,能帮助搜索引擎更好地处理你的网站。robots.txt 告诉抓取工具网站的哪些部分可以抓取、哪些不可以。sitemap.xml 列出你希望它们找到的页面。两者配合得很好,但无论哪一个,都不能保证某个页面一定会被索引,或一定不会出现在搜索结果中;下面的大多数问题,正是源于对这一点的误解。

robots.txt 的作用

robots.txt 是一个纯文本文件,必须放在主机的根目录下,例如 https://example.com/robots.txt。它只对这个确切的协议和主机生效,所以 shop.example.com 需要有自己的文件。遵守机器人排除协议(Robots Exclusion Protocol)的抓取工具,包括 Googlebot 和 Bingbot,会在抓取之前读取它,并遵守其中的规则。

它只是一组请求,并不是安全功能。不守规矩的机器人可以无视它,而且这个文件本身是公开的,把某个“秘密”目录写进去,反而等于在替它做广告。私密内容要靠身份验证来保护。

一个简单的 robots.txt

  • User-agent: *
  • Disallow: /admin/
  • Disallow: /cart
  • Disallow: /search
  • Sitemap: https://example.com/sitemap.xml

逐行来看:这些规则适用于所有抓取工具(*);不要抓取 /admin/ 下的任何内容,也不要抓取以 /cart 或 /search 开头的任何网址;站点地图位于给出的地址。Sitemap 这一行必须是完整网址,而且无论它写在哪个 user-agent 分组里都会生效。

规则是怎样被解读的

  • 规则匹配的是网址路径的开头部分,并且区分大小写:Disallow: /Admin 屏蔽不了 /admin。
  • Google 支持两个通配符:* 表示任意字符序列,$ 表示网址结尾。Disallow: /*.pdf$ 会屏蔽以 .pdf 结尾的网址。
  • 当 Allow 和 Disallow 规则冲突时,Google 会采用最具体(最长)的那条匹配规则;长度相同时以 Allow 为准。
  • 抓取工具只遵守点名指向它的最具体的那个分组。如果你写了一个 User-agent: Googlebot 分组,Googlebot 就会完全忽略 User-agent: * 分组,所以共用的规则要在其中重复一遍。
  • Disallow: / 会屏蔽整个网站。空的 Disallow: 则什么都不屏蔽。

禁止抓取不等于禁止索引

这是关于 robots.txt 最重要的一点。被禁止抓取的网址只要有其他页面链接到它,仍然可能出现在搜索结果中,通常不带描述:Google 知道这个网址存在,只是没有读过它的内容。要让页面不出现在搜索结果中,应当允许它被抓取,并添加 noindex 指令:要么在 HTML 中写入 <meta name="robots" content="noindex">,要么发送 X-Robots-Tag: noindex 响应头。如果 robots.txt 屏蔽了这个页面,Google 就永远看不到那个 noindex。

Google 会忽略的规则

Google 不支持在 robots.txt 里写 noindex(它从 2019 年起不再理会这条非官方规则),也会忽略 Crawl-delay。Bing 则会遵守 Crawl-delay。如果 Googlebot 给你的服务器造成了过大的负载,应当解决服务器容量问题,紧急情况下也可以暂时返回 503 或 429 响应。

sitemap.xml 的作用

XML 站点地图是一份网址清单,列出你希望搜索引擎抓取并索引的网址。它对以下几类情况最有价值:大型网站、外部链接还很少的新网站,以及难以通过内部链接到达的页面。一个最精简的站点地图是这样的:

  • <?xml version="1.0" encoding="UTF-8"?>
  • <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  • <url><loc>https://example.com/</loc><lastmod>2026-09-20</lastmod></url>
  • <url><loc>https://example.com/pricing</loc><lastmod>2026-08-02</lastmod></url>
  • </urlset>
  • 大小限制:每个站点地图文件最多可包含 50,000 个网址,未压缩时最大 50 MB。更大的网站会把网址拆分到多个站点地图中,再用一个站点地图索引文件把它们列出来。
  • lastmod:如果最后修改日期一贯准确,Google 就会采用它。只在页面内容发生实质性变化时更新,而不是每次部署都改。
  • priority 和 changefreq:Google 两个都不看,所以没必要去调它们。
  • 只列出你希望被索引的网址:规范的、可索引的、返回 200 的页面。重定向、错误页面、noindex 页面,以及带跟踪参数的重复网址都不要放进去。

创建并提交站点地图

一般用不着手写。WordPress 从 5.5 版起就会在 /wp-sitemap.xml 生成一份基础站点地图,SEO 插件则会用自己的版本取而代之;Shopify 和大多数托管式建站平台会自动创建 /sitemap.xml;在 Next.js 中,一个 app/sitemap.ts 文件就能生成站点地图。有了站点地图之后,通过两种方式告诉搜索引擎它在哪里:在 robots.txt 中加一行 Sitemap:,并在 Google Search Console 的站点地图报告(以及 Bing Webmaster Tools)中提交。随后,Search Console 会显示它能否被读取,以及其中有多少网址已被索引。

如何检查你的 robots.txt 和站点地图

先在浏览器中打开这两个文件:/robots.txt 和站点地图的网址。然后用 Rudra 的免费 SEO 检测工具检查你关心的页面。它会获取你的 robots.txt,报告它是否对通用的 * user-agent 屏蔽了被测页面,以及是否声明了站点地图。接着它会寻找站点地图(先看声明的位置,没有的话再看 /sitemap.xml 和 /sitemap_index.xml),检查它能否被解析为站点地图或站点地图索引,并报告其中的条目是否带有 lastmod 日期,以及被测网址是否列在其中。

想知道 Google 自己是怎么看的,可以使用 Search Console 中的 robots.txt 报告和网址检查工具,它们会显示某个具体网址是否被屏蔽、是否已被索引。

常见错误

  • 带着预发布环境的 robots.txt 上线。开发阶段遗留的一行 Disallow: / 可能把整个线上网站都屏蔽掉。上线当天务必检查 robots.txt。
  • 屏蔽了页面渲染所需的 CSS 和 JavaScript,导致 Google 看到的页面与访客看到的不一样。
  • 用 robots.txt 把页面从 Google 中移除。应当使用 noindex(并允许页面被抓取);情况紧急时,使用 Search Console 中的移除工具。
  • 对同一个页面既用 robots.txt 屏蔽又加 noindex,结果 noindex 根本不会被看到。
  • 在站点地图中列了不该列的网址:重定向、404、noindex 页面、http:// 版本,或者另一个域名。
  • 每次构建都把所有 lastmod 日期设为当天,这会让这些日期对搜索引擎毫无用处。
  • robots.txt 返回服务器错误。Google 会把不存在的 robots.txt (404) 视为“全部可以抓取”,但 5xx 错误可能让它停止抓取整个网站,直到该文件恢复可用。

常见问题

我需要 robots.txt 文件吗?

不一定。如果没有什么地方需要挡住抓取工具,可以不设;robots.txt 返回 404 就表示所有内容都可以抓取。不过许多网站还是会加上一个,用来屏蔽站内搜索结果这类低价值区域,并指明站点地图的位置。

我需要 XML 站点地图吗?

内部链接做得好的小型网站,通常没有站点地图也能被发现,但站点地图成本很低,还能帮助搜索引擎更快找到新增和更新的页面。大型网站、新网站,以及页面层级深或链接不足的网站受益最大。

把页面加进站点地图,它就会被索引吗?

不会。站点地图帮助搜索引擎发现网址,但页面是否被索引,取决于它的质量、是否与其他页面重复,以及它能否被抓取、有没有被标记为 noindex。

如何用 robots.txt 屏蔽 AI 爬虫?

为每个想屏蔽的爬虫添加一个 user-agent 分组,例如 GPTBot (OpenAI) 或 CCBot (Common Crawl),并写上 Disallow: /。Google-Extended 控制 Google 能否把你的内容用于其 AI 模型,且不影响 Google 搜索。这些规则只对愿意遵守 robots.txt 的爬虫有效。

robots.txt 和 sitemap.xml 应该放在哪里?

robots.txt 必须位于每个主机的根目录,例如 https://example.com/robots.txt。站点地图可以放在主机上的任何位置,但惯例是 /sitemap.xml;请在 robots.txt 中声明它的位置,并在 Google Search Console 中提交。

需要更深入的网站分析?

查看网站上的每个问题,并按修复优先级排序

无需账户即可免费检查任意页面,注册后还可抓取整个网站。每份报告涵盖 SEO、常见性能问题、无障碍和安全,并为每个问题提供修复建议。