SEO

X-Robots-Tag

X-Robots-Tag 是一种通过 HTTP 响应头部来控制搜索引擎 抓取 和 收录 的方式。它不是把 <meta name="robots"> 放在 HTML 内部,而是由服务器在响应头部中发送相同的指令,例如 X-Robots-Tag: noindex。

X-Robots-Tag 是一种通过 HTTP 响应头部来控制搜索引擎 抓取收录 的方式。它不是把 <meta name="robots"> 放在 HTML 内部,而是由服务器在响应头部中发送相同的指令,例如 X-Robots-Tag: noindex

为何重要

HTML meta 标签只在 HTML 文件内部起作用。非 HTML 资源,例如 PDF、图片、视频、JSON API 响应,无法使用 <meta> 标签,从而在收录控制上留下空白。X-Robots-Tag 适用于任何 HTTP 响应,填补了这一空白。Search Engine Land 记录过一些电商案例,其中数以万计的 PDF 目录被收录,并作为 重复内容 损害了排名,而用 X-Robots-Tag 一次性就解决了问题。

X-Robots-Tag、Meta Robots 与 robots.txt 对比

方法位置作用范围是否阻止抓取?
robots.txt/robots.txtURL 模式是,阻止抓取本身
Meta RobotsHTML <head>该 HTML 页面否,仅控制收录
X-Robots-TagHTTP 响应头部任意资源类型否,仅控制收录

关键区别:robots.txt 说的是"不要抓取",而 Meta Robots 和 X-Robots-Tag 说的是"不要收录"。要阻止收录,Googlebot 必须实际访问到该页面才能读取指令。在 robots.txt 中阻止会完全停止抓取,因此 Google 永远看不到收录指令。

主要指令

指令含义
noindex不在搜索结果中显示
nofollow不跟踪页面上的链接
none等同于 noindex, nofollow
noarchive不在 SERP 中显示缓存副本
nosnippet不显示摘要或缩略图
unavailable_after: [date]在该日期后从索引中移除
max-snippet: [n]限制摘要长度
max-image-preview: [setting]限制图片预览尺寸
max-video-preview: [n]限制视频预览长度

若要在 HTML 页面内部进行摘要级别的控制,可在你想要从搜索摘要中排除的具体元素上使用 data-nosnippet。这与 X-Robots-Tag 不同,因为它只隐藏所选文本,而不会改变整个资源的收录状态。

配置示例

阻止 PDF 收录(Apache .htaccess):

<FilesMatch "\.pdf$">
  Header set X-Robots-Tag "noindex, nofollow"
</FilesMatch>

阻止某个图片目录(Nginx):

location /private-images/ {
  add_header X-Robots-Tag "noindex";
}

针对特定爬虫(仅限 Googlebot):

X-Robots-Tag: googlebot: noindex

限时收录

X-Robots-Tag: unavailable_after: 31 Dec 2026 23:59:59 GMT

元素级别的摘要排除(HTML):

<p data-nosnippet>Do not show this sentence in Google snippets.</p>

实践中的陷阱

不要与 robots.txt disallow 组合使用:如果 robots.txt 阻止了该 URL,Google 根本无法读取头部。要阻止收录,请在 robots.txt 中允许抓取,并使用 X-Robots-Tag noindex

需要服务器配置:与 meta 标签不同,X-Robots-Tag 在 Web 服务器层面配置(Apache、Nginx、Cloudflare Workers)。CMS 平台并不总能自动处理它。

用 Search Console 或 curl 验证:用 Google Search Console 的网址检查工具或 curl -I https://example.com/file.pdf 检查头部是否确实出现。

摘要控制不是隐私控制nosnippetdata-nosnippet 改变的是 Google 显示结果的方式,但底层内容仍然可被公开访问。对于私密内容,请使用身份验证或服务器端访问控制。

Sources: