一句话回答
X-Robots-Tag 是一个 HTTP 响应头,给搜索引擎爬虫下达针对当前网址的收录指令,比如 noindex 或 nofollow;和 robots meta 标签不同,它适用于任何文件类型,包括 PDF 和图片。
公式: X-Robots-Tag: [爬虫名:] 指令[, 指令]
什么是 X-Robots-Tag?
X-Robots-Tag 是一个 HTTP 响应头,给爬虫下达针对当前网址的收录指令:
HTTP/1.1 200 OK
Content-Type: application/pdf
X-Robots-Tag: noindex, nofollow
它和 <meta name="robots"> 标签作用相同,但因为是响应头,所以适用于任何文件类型(PDF、图片、视频、订阅源),还能在服务器配置里按目录或文件类型统一设置。
常用指令
| 指令 | 作用 |
|---|---|
noindex | 不在搜索结果里展示这个网址 |
nofollow | 不跟踪页面上的链接 |
none | 等于 noindex, nofollow |
nosnippet | 不展示文字摘要或视频预览 |
noimageindex | 不收录页面上的图片 |
max-snippet:[n] | 摘要最多 n 个字符 |
unavailable_after:[日期] | 过了这个日期就不再展示 |
指令可以只针对某个爬虫:X-Robots-Tag: googlebot: noindex。
X-Robots-Tag、meta robots 和 robots.txt
| robots.txt | meta robots | X-Robots-Tag | |
|---|---|---|---|
| 控制什么 | 抓取 | 收录和展示 | 收录和展示 |
| 写在哪里 | 网站根目录的一个文件 | 每个 HTML 页面里 | HTTP 响应头 |
| 文件类型 | 任意 | 只有 HTML | 任意 |
| 范围 | 路径和规则 | 单个页面 | 单个网址,或通过服务器规则作用于多个 |
经典陷阱:在 robots.txt 里屏蔽一个网址,同时又加了 noindex。爬虫不被允许抓取,就永远看不到 noindex,这个网址仍可能出现在结果里(通常没有摘要)。想把网址从搜索结果里去掉,应该允许抓取并发送 noindex。
配置示例
Nginx,让所有 PDF 不进搜索结果:
location ~* \.pdf$ {
add_header X-Robots-Tag "noindex, nofollow" always;
}
Apache(.htaccess),同样的规则:
<FilesMatch "\.pdf$">
Header set X-Robots-Tag "noindex, nofollow"
</FilesMatch>
Cloudflare Worker,给测试环境域名加 noindex:
const res = await fetch(request);
const out = new Response(res.body, res);
if (new URL(request.url).hostname.startsWith('staging.')) {
out.headers.set('X-Robots-Tag', 'noindex');
}
return out;
怎么验证
curl -sI https://example.com/files/report.pdf | grep -i x-robots-tag
在 Google Search Console 里,页面被重新抓取后,网址检查工具会显示「已被 noindex 标记排除」。
AI 爬虫
Google 的爬虫遵守 X-Robots-Tag;Google-Extended(用于 Gemini 训练)是在 robots.txt 里控制的,而不是用响应头。其他 AI 爬虫大多只说明支持 robots.txt 规则,对它们用 robots.txt 或服务器端拦截。
TapCub 能检查什么
TapCub 的爬虫合规页(监测 › 爬虫合规)会抓取你的 robots 规则文件,并和真实的爬虫抓取记录比对,列出抓了被禁止路径或无视抓取间隔的爬虫。它不检查响应头,所以没法确认 X-Robots-Tag 有没有发出去,这一点用 curl 或 Search Console 确认。导入服务器日志后,抓取健康会显示各搜索引擎抓了哪些页面、状态码是什么。另见robots.txt 全站禁止抓取。
相关阅读
这个解释清楚吗?
我们会根据反馈修改和补充这篇内容。
提交没有成功,请稍后再试。
谢谢你的反馈,我们会据此改进这篇内容。你已经反馈过这篇了,谢谢。
