从零到一:Hugo 项目部署 Cloudflare Pages 避坑指南
今天“ 豆子技术站”正式上线了!虽然部署过程只用了几个小时,但中间踩了不少坑。为了让大家少走弯路,我把这段折腾经历记录下来。 为什么选择 Hugo + GitHub + Cloudflare? 我有自己的服务器,最初想用 mdBook。但 mdBook 适合书籍展示,格式太固定,不适合折腾。最终我选择了 Hugo —— 虽有一段时间没用,但基础还在。 在主题选型上我花了不少时间,从花哨的 Blowfish 转向了更严谨的 FixIt。虽然我的重心正转向 Go 和 Rust,但 2026 年初的首要任务是搭建好这个支持中英双语的“根据地”。 站长忠告:切忌心急。 很多弯路其实是因为没读懂 Cloudflare 的英文提示就直接上手导致的。 避坑指南:我踩过的六个坑 1. 误判服务:Workers 还是 Pages? 这是最尴尬的一个坑。我一直在 Cloudflare Workers 里折腾,结果页面永远显示 Hello World。AI 告诉我是配置文件没生效,我折腾半天无果,最后通过 Google 搜索才发现:我要部署的是静态站(Pages),而不是函数脚本(Workers)。换成 Pages 服务后,一遍过。 2. DNS 托管的“心理障碍” Cloudflare 的免费计划要求将 DNS 托管给它。起初我很抗拒,因为我还有阿里云的子域名(如小程序后端 mp)在运行,担心影响原有业务。 解决方法:在域名注册商后台将 DNS 服务器换成 Cloudflare 提供的地址。 关键点:激活后,记得把原来的解析记录在 Cloudflare 重新添加一遍。以后新增解析都在 Cloudflare 完成。 3. 页面样式“裸奔”:baseURL 没填对 部署完成后,网站能打开但没有样式(CSS 加载失败)。 原因:F12 检查发现 URL 地址不对。 解决:在 hugo.toml 中将 baseURL 修改为你的自定义域名。 进阶:在 Cloudflare 构建命令中使用 hugo -b $CF_PAGES_URL,系统会自动处理域名。 4. CNAME 无法直接生效 我起初打算在原域名商处使用 CNAME,但死活打不开。事实证明,为了享受 Cloudflare 的全套防护和证书服务,DNS 托管是最高效的选择。 ...