Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Redirects for AI Training 强制规范化内容

原文:Redirects for AI Training enforces canonical content Source: https://blog.cloudflare.com/ai-redirects/

2026-04-17

Cloudflare 的 Wrangler CLI 在过去六年里发布了多个大版本,每个版本都至少包含对命令、配置或开发者与平台交互方式的若干关键变更。像任何活跃维护的开源项目一样,我们让旧版本的文档保持可访问。v1 文档 带有弃用横幅、noindex meta 标签 以及指向当前文档的 canonical 标签。每一种建议性信号都说着同一件事:这内容已过时,看别处。AI 训练爬虫并不可靠地遵守这些信号。

我们在 developers.cloudflare.com 上使用 AI Crawl Control,所以我们知道在过去 30 天里,AI Crawler 类别 中的 bot 访问了 480 万次,它们消费废弃内容的速率与消费当前内容的速率相同。建议性信号没有产生可衡量的差异。这一影响是累积的,因为 AI agents 并不总是实时抓取内容,它们依赖训练好的模型。当爬虫摄入废弃文档时,agents 就继承了过时的基础。

今天,我们推出 Redirects for AI Training,让你能强制让经过验证的 AI 训练爬虫被重定向到最新内容。你现有的 canonical 标签会自动转化为对验证过的 AI 训练爬虫的 HTTP 301 重定向,一键开关,在所有付费 Cloudflare 计划上可用。

而且因为状态码归根结底是 web 向爬虫传达策略的方式,Radar 的 AI Insights 页面现在新增了 Response status code 分析,展示 AI 爬虫在所有 Cloudflare 流量上收到的各种状态码类型(成功(2xx)、重定向(3xx)、客户端错误(4xx)和 服务器错误(5xx)),作为今天 web 如何回应 AI 爬虫的视角。

今天的 AI 训练爬虫面对死胡同

对搜索引擎来说,noindex 是一个丰富的信号系统,但没有等价的内联指令告诉一个页面“不要拿来训练“。把废弃页面带着警告横幅留在线上对人类有用 —— 他们读完通知就会离开 —— 但 AI 训练爬虫摄入的是全文,并可能把横幅当作另一段文字,即便警告可见也会回访数千次。

屏蔽则带来另一个问题:它制造一个虚空,没有任何信号告诉爬虫该改学什么。robots.txt 提供有限的保护,但随着自动化流量增长,维护按 crawler、按路径、按内容更新的指令需要大量手动维护。爬虫需要的是具体方向:“当前内容在这里。”

<link rel="canonical"> 标签是 RFC 6596 中定义的 HTML 元素,它告诉搜索引擎和自动化系统哪个 URL 代表页面的权威版本。它已存在于 65-69% 的 web 页面 上,并由 EmDash、WordPress 与 Contentful 等平台自动生成。这套基础设施声明了你内容的当前版本是什么,Redirects for AI Training 强制执行它。

它如何工作

Redirects for AI Training 基于两个输入工作:Cloudflare 的 cf.verified_bot_category 字段以及你 HTML 中已有的 <link rel="canonical"> 标签。AI Crawler 类别 涵盖为 AI 模型训练而抓取的 bot,包括 GPTBot、ClaudeBot 和 Bytespider,与覆盖 AI Agents 的 AI AssistantAI Search 类别有所区别。

当请求来自一个验证过的 AI Crawler,Cloudflare 读取响应 HTML。如果存在非自指 canonical 标签,Cloudflare 在返回响应前发出一个指向该 canonical URL 的 301 Moved Permanently。人类流量、搜索索引和其他自动化流量不受影响。

下面是一个 GPTBot 请求废弃路径时的交互:

GET /durable-objects/api/legacy-kv-storage-api/

Host: developers.cloudflare.com

User-Agent: Mozilla/5.0 (compatible; GPTBot/1.1; +https://openai.com/gptbot)

HTTP/1.1 301 Moved Permanently

Location: https://developers.cloudflare.com/durable-objects/api/sqlite-storage-api/

它不会做什么

它不会追溯纠正已被摄入的训练数据,也不覆盖 AI Crawler 类别之外的未验证爬虫。访问废弃页面的人类和 AI Agents 不会被重定向。我们也按设计排除跨源 canonical(指向不同域名上首选 URL 的标签),因为它们常用于域名整合,而不是内容新鲜度。为避免循环,自指 canonical(指向自身 URL 的标签)也不会触发重定向。

为什么不直接用 redirect rules?

Single Redirect Rules 可以按 user-agent 字符串针对 AI 爬虫,而如果一个站点只有少量已知废弃路径,这是行得通的。但它无法扩展:每条新废弃路径都需要修改规则,user-agent 必须手动跟踪,而且会占用 计划限额,而本可用于活动 URL 或域名迁移。Redirect rules 也是手动重新编码 canonical 标签已经声明的东西,且会随内容变化而失同步。

我们在自家文档站点上发现了什么

我们自己的经历表明这个问题真实存在。我们在 developers.cloudflare.com 上使用 AI Crawl Control,使用的是所有 Cloudflare 客户都能用的同一 dashboard。2026 年 3 月,Workers 的遗留文档被 OpenAI 抓取约 46,000 次,被 Anthropic 抓取 3,600 次,被 Meta 抓取 1,700 次。

废弃页面被这样抓取,可能是为什么我们在 2026 年 4 月问一个领先的 AI assistant“如何用 Wrangler CLI 写 KV 值?“时,它给出过时答案:“You write to Cloudflare KV via the Wrangler CLI using the kv:key put command.”

实际上,正确语法(截至 2026 年 4 月)是 wrangler kv key put;冒号语法(kv:key put)在 Wrangler 3.60.0 中已被弃用。我们的文档 带有内联弃用通知,但训练管道如何解读这些通知并不清楚。

于是我们在 developers.cloudflare.com 上启用了 Redirects for AI Training 并测量响应。在头七天里,100% 的指向带非自指 canonical 标签页面的 AI 训练爬虫请求被重定向,且没有被提供废弃内容。

我们预计把爬虫重定向到当前内容,最终会改善关于遗留工具的 AI 生成回答。鉴于训练管道的封闭性以及重新爬取时间的可变性,这是我们将持续验证的假设。但在访问点爬虫所收到的内容,已经立即得到改善。

如何启用

如果你的站点有 canonical 标签,你现有的内容层级现在就可以对验证过的 AI 训练爬虫强制执行。Cloudflare 的 verified bot 分类 自动处理爬虫识别。

在 dashboard 中: 在任何域名上,前往 AI Crawl Control > Quick Actions > Redirects for AI training > 切换开启

通过 Configuration Rules 与 Cloudflare for SaaS 进行路径级控制,请参阅 完整文档

web 如何回应 AI 爬虫

Redirects for AI Training 把一个状态码 301 Moved Permanently 变成你内容策略的强制执行机制。但 301 只是源站与爬虫之间更广泛对话中的一种信号。200 OK 表示内容已提供。403 Forbidden 表示访问被屏蔽。402 Payment Required 告诉客户端它需要付费才能访问。把这些放在一起看,AI 爬虫流量上的状态码分布揭示了 web 实际是如何在大规模上回应爬虫的。

Radar 的 AI Insights 页面 现在新增了一张 Response status code 分析 图,展示 AI 爬虫流量的顶部响应状态码或状态码 分组(可通过下拉选择)的分布。数据可按行业集筛选;crawl purpose 筛选也可在 Data Explorer 中应用。带筛选的分析提供了一种视角,让人看到不同类型的爬虫是否表现不同,或请求模式与分布是否随行业变化。

在下方的常规示例中,我们可以看到在该图所覆盖的时段内,略高于 70% 的请求被成功响应(200),10.1% 的请求被重定向(301302)到另一个 URL,3.7% 是文件未找到(404)。8.3% 的请求访问被屏蔽,收到 403 状态码。分组来看,我们发现近 74% 的请求收到 成功响应(2xx),13.7% 收到 客户端错误响应(4xx),11.3% 收到 重定向消息(3xx),1.2% 被发出 服务器错误响应(5xx)。

该分析也已加入 单独的 bot 页面,为了解每个爬虫的此类行为提供洞察。在下方所示的 GPTBot 示例中,我们可以看到在该图覆盖的时段内,略高于 80% 的请求被成功响应(200),4.7% 的请求被重定向(301302)到另一个 URL,仅 2.7% 是文件未找到(404)。近 6% 被屏蔽,Cloudflare 返回 403 状态码。分组来看,我们发现 83% 的请求收到 成功响应(2xx),近 10% 收到 客户端错误响应(4xx),5.1% 收到 重定向消息(3xx),其余 2.2% 收到 服务器错误响应(5xx)。

如上所述,Radar 的 Data Explorer 让用户可以应用更多筛选,深入数据。例如,我们可以看 哪些爬虫 请求最多不存在的内容(导致 404 状态码)、其请求流量随时间的趋势,或 哪些行业训练 爬虫返回最多 重定向(3xx)状态码,以及该活动随时间的趋势。

响应状态码数据,无论聚合还是按 bot 维度,也通过 Cloudflare Radar API 可用。

Redirects for AI Training 让你塑造爬虫从你源站收到什么;Radar 的状态码分析让你看到 web 其他部分正在做同样的事情。在 AI Crawl Control > Overview > Quick Actions 启用 Redirects for AI Training,今天就开始把建议性信号替换为站点上强制性的结果。

有问题或想分享你看到的情况?加入 Cloudflare Community 上的讨论,或在 Discord 上找到我们