在本教程中,你将学习如何将 Netlify 应用迁移到 Cloudflare Pages。
要将应用迁移到 Cloudflare Pages,请找到构建命令和构建目录。Cloudflare Pages 将使用此信息构建并部署应用。
在 Netlify 仪表板中,找到要部署的项目。它应配置为从 GitHub 仓库部署。
在站点仪表板中,选择 Site Settings(站点设置),然后选择 Build & Deploy(构建和部署)。

在 Build & Deploy(构建和部署) 选项卡中,找到 Build settings(构建设置) 面板,其中包含 Build command(构建命令) 和 Publish directory(发布目录) 字段。保存这些值以便部署到 Cloudflare Pages。在下图中,Build command(构建命令) 为 yarn build,Publish directory(发布目录) 为 build/。
如果站点在发布目录中包含 _redirects 文件,可以在 Cloudflare Pages 中使用相同文件,重定向将成功执行。如果重定向在 netlify.toml 文件中,需要将其添加到 _redirects 文件夹。Cloudflare Pages 目前对高级重定向的支持有限。如果有超过 2000 条静态和/或 100 条动态重定向规则,建议使用 Bulk Redirects。
标头文件也可以移动到发布目录中的 _headers 文件夹。需要注意的是,_headers 文件中定义的自定义标头目前不会应用于来自 functions 的响应,即使 function 路由与 URL 模式匹配。要了解如何处理标头,请参阅标头。
在表单组件中,从 <form> 标签中移除 data-netlify = "true" 属性或 Netlify 属性。现在可以将表单逻辑作为 Pages Function 处理,并将条目收集到数据库或 Airtable。更多信息请参阅使用 Pages Functions 处理表单提交教程。
Netlify functions 和 Pages Functions 共享相同的文件系统约定,在项目根目录使用 functions 目录处理无服务器 functions。但是,语法和 functions 的部署方式不同。Pages Functions 在 Cloudflare Workers 上运行,默认在 Cloudflare 全球网络上运行,无需额外代码或配置即可部署。
Pages Functions 还提供中间件,可以在 function 路由处理器之前和/或之后运行所需的任何逻辑。
Netlify functions 导出接受 event 和 context 参数的 async 事件处理器。对于 Pages Functions,需要导出单个接受 context 对象的 onRequest function。context 对象包含请求的所有信息,如 request、env、params,并返回新的 Response。了解更多关于编写第一个 function的信息。
使用 Netlify functions 的 Hello World:
exports.handler = async function (event, context) {
return {
statusCode: 200,
body: JSON.stringify({ message: "Hello World" }),
};
};使用 Pages Functions 的 Hello World:
export async function onRequestPost(request) {
return new Response(`Hello world`);
}netlify.toml 文件可能包含 Pages 支持的配置,例如预览部署、指定发布目录和插件。迁移配置后可以删除该文件。
可以将访问管理迁移到 Cloudflare Zero Trust,它允许你管理应用的用户身份验证、事件日志和请求。
找到构建目录和构建命令后,即可将项目迁移到 Cloudflare Pages。
快速入门指南将指导你如何将 GitHub 项目添加到 Cloudflare Pages。
如果选择为 Pages 使用自定义域名,可以将其设置为当前部署的 Netlify 应用的相同自定义域名。要为 Pages 项目分配自定义域名,请参阅自定义域名。
在 Cloudflare 仪表板中,前往 DNS Records(DNS 记录) 页面。
Go to Records ↗确认已将域名的 CNAME 记录从 Netlify 更新为 Cloudflare Pages。DNS 记录更新后,请求将发送到 Pages 应用。
在 DNS 中,记录的 Content(内容) 应为 <SUBDOMAIN>.pages.dev 子域名。
完成上述步骤后,你已成功将 Netlify 项目迁移到 Cloudflare Pages。