Cloudflare Pages部署纯HTML项目需留空Build command并设Output directory为.(英文句点),因默认触发构建导致404;index.html须置于仓库根目录且全小写,路径区分大小写,SPA需添加./_redirects文件实现路由fallback。

纯 HTML 项目直接扔进 Cloudflare Pages 会 404,不是你文件错了,是它默认要执行构建流程——而你根本不需要构建。
Build command 留空但 Output directory 必须填 .
Cloudflare Pages 后台配置里,“Build command” 看似可选,但留空 ≠ 不执行构建;它会 fallback 到默认行为(比如尝试 npm run build),然后报错“no such script”。真正的解法是:把 Build command 设为 exit 0(推荐)或干脆不填,同时 Output directory 填 .(英文句点,不能是 ./、"" 或 public)。
原因很实际:. 是唯一被识别为“就用 Git 仓库根目录当发布根”的写法。填 dist 它就找 dist/index.html,但你没这个目录;填空它自动构建;填 ./ 会被拒绝。
-
index.html必须在 Git 仓库最顶层,不能在src/、docs/或子文件夹里 - 文件名必须全小写:
Index.html或INDEX.HTM在 Linux 构建环境里就是 404 - 如果用了自定义域名,DNS 必须由 Cloudflare 托管,否则 HTTPS 证书不会生效
本地能打开,上线后图片/JS/CSS 404
这不是 Cloudflare 的问题,是你提交的文件结构和它服务的路径不一致。Pages 只按你 Git 提交的树形结构 + Output directory 设置来映射 URL,不猜、不补、不重写路径。
常见原因:
- 图片路径写成
src="images/logo.png",但 Git 里根本没有images/目录(git ls-tree -r HEAD --name-only | grep images返回空) - 用了 Hugo/Next.js 等生成器,但图片放在
src/assets,没按规则放去static/或public/ - URL 区分大小写:本地 Windows 不敏感,但 Pages 构建环境是 Linux,
Logo.png和logo.png是两个文件
验证方式:用真实构建命令生成产物(如 hugo --destination ./dist),再起本地服务器 cd dist && python3 -m http.server 8000,看是否复现线上问题。
img align 失效不是部署问题,是 HTML 写法过时
align 属性在 HTML5 中已废弃,Cloudflare Pages 不做兼容处理,浏览器直接忽略。你改了部署设置也白搭。
替换方案很简单:
- 内联样式:

- 外链 CSS:
+
.img-right { float: right; } - Markdown 场景下,用
包裹
顺带一提:构建日志里如果出现 “deprecated align attribute” 警告,别跳过——那是最直接的线索。
加 ./_redirects 避免单页应用路由 404
如果你的 HTML 是 SPA(比如用 Vue Router 或 React Router 的 createBrowserRouter),直接访问 /about 会 404,因为 Pages 默认只认物理文件路径。
解决方法是在仓库根目录加一个 ./_redirects 文件,内容只有一行:
/ /index.html 200
这告诉 Pages:所有未匹配到物理文件的请求,都返回 index.html,由前端路由接管。注意该文件必须在 Git 根目录,且不能叫 _redirects.txt 或放在子目录。
真正卡住人的地方往往不是技术多难,而是 . 和 ./ 的区别、大小写敏感、以及把过时 HTML 当成部署问题去调——这些点不盯死,反复重试也没用。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











