Cloudflare Pages 可托管纯 HTML 文件,需将 Output directory 设为 . 且 index.html 置于仓库根目录;留空 Build command,避免默认构建失败。

Cloudflare Pages 不能直接托管纯 HTML 文件(没构建步骤)
Cloudflare Pages 默认期望你有一个构建流程,比如 npm run build 输出到 dist 或 public 目录。如果你只是扔一个 index.html 进去,它会报错或返回 404——不是你不配,是它没找到“构建产物”。
解决办法只有一个:告诉 Cloudflare Pages “别构建了,就用这个目录当根”。
- 在项目根目录加一个
./_redirects文件(可选,但推荐),内容写:/ /index.html 200
,避免单页应用路由 404 - 部署时,在 Cloudflare Pages 后台设置:Build command 留空,Output directory 填
.(英文句点) - 确保你的
index.html在 Git 仓库最顶层,不是套在src/或docs/里
为什么填 . 而不是 ./ 或空字符串
Cloudflare Pages 的输出目录字段对路径解析很严格:./ 会被拒绝,空字符串会触发默认构建逻辑,只有 . 才被识别为“当前目录即发布根”。这是文档里没明说、但实测唯一有效的写法。
- 填
public?它会找public/index.html,但你没这目录 - 填
dist?同上,找不到就 404 - 填
""(空)?它自动执行npm run build,然后报错“no such script”
部署后访问 404 或显示“Project not found”
常见于三种情况:仓库权限不对、分支没选对、或者 HTML 文件名不是 index.html。
立即学习“前端免费学习笔记(深入)”;
- 确认 GitHub/GitLab 仓库是公开的,或已授权 Cloudflare 访问私有库(私有库需手动授权)
- 在 Pages 设置里检查 Branch 是否选的是你 push 了
index.html的那个分支(通常是main或master) -
index.html必须全小写,不能叫Index.html或INDEX.HTM——Cloudflare 是区分大小写的 - 如果用了自定义域名,先确认 DNS 已指向
pages.dev,且状态是Active
想加 HTTPS 或自定义域名,但页面打不开
Cloudflare Pages 自带免费 HTTPS,但自定义域名必须走 Cloudflare DNS 才能生效。如果你把域名 DNS 指向其他服务商(比如阿里云、Namecheap),即使 CNAME 解析对了,HTTPS 也会失败,浏览器提示“证书无效”。
- 登录 Cloudflare,把域名添加为站点(哪怕只用 Pages),让它接管 DNS
- 在 Pages 项目里绑定域名时,状态变成
Active才算真正就绪 - 如果之前绑过又解绑,等几分钟再重试——证书缓存和 CDN 配置有延迟
.,HTML 放对位置。其余都是围绕这两点在排障。很多人卡在“明明文件传上去了却 404”,其实只是路径没喂对。











