两个小文件常被当成安全边界使用,但它们不是。robots.txt 描述爬虫偏好,sitemap 则给搜索系统一份属于该站点的 URL 清单。
robots.txt 能做什么、不能做什么
规则发布于源站根路径 /robots.txt,由配合的爬虫读取。它不会保护私有目录、不会从网络上移除 URL,也不能替代认证。不应公开的路由需要服务器授权或网络边界。
让文件保持平实,并测试它的实际位置:
User-agent: *
Disallow:
Sitemap: https://www.example.test/sitemap.xml
文件应为 UTF-8。如果部署会重定向它,请核验你想要的爬虫行为,而不是假设每个客户端都遵循同一条链。
sitemap 增加了什么
sitemap 是一份清单,而不是权限列表。使用单一主机的绝对 URL、正确做 XML 转义,并且只列出你准备发布的规范页面。不要因为某个 URL 存在于构建目录就把它列出。
每份 sitemap 最多包含 50,000 个 URL,未压缩大小不超过 50 MB(52,428,800 字节);gzip 不会提高该限制。小站可以不用 index,但多语言生成器也可以合理地生成指向各语言 sitemap 的索引。应检查根元素并继续检查列出的各份 sitemap,而不是假设 /sitemap.xml 一定是 URL 集合。把它的 XML 校验通过,并像普通页面一样通过同一 HTTPS 边缘请求它。
curl -fsS https://www.example.test/robots.txt
curl -fsS -o sitemap.xml https://www.example.test/sitemap.xml && \
xmllint --noout sitemap.xml
把下载与解析分开,避免下载失败被解析成功掩盖。XML 格式正确只代表语法通过;还要验证命名空间、URL 数量、规范主机名,以及列出的页面是否存在。若未安装 xmllint,请在发布它的同一个 CI 环境里解析该 XML。重要的是检查要在文件被替换到边缘之前运行。
robots 的 Disallow 不是可靠的搜索索引删除指令。还要测试错误响应:RFC 9309 在 robots 返回 4xx、表示文件不可用时允许抓取,而网络或服务器错误在最初要求全部禁止。意外返回状态为 200 的 HTML 兜底页,因此可能改变爬虫行为,即使 URL 看起来仍然可访问。
来源
- RFC 9309 — Robots Exclusion Protocol,robots 规则、文件位置与 user-agent 匹配,已核验 2026-07-21。
- Sitemaps Protocol,sitemap XML 结构与发现,已核验 2026-07-21。