← 返回

把导出的包放上线

Guidely 导出的是一包纯静态文件:没有接口、没有数据库、不连我们的服务器。 所以它能放的地方和 HTML 一样多。下面按「我们自己在用的那条路」写, 写的是能跑的命令,不是示意图。

一 · 包里有什么

解压后是一个完整站点,所有引用都是相对路径 —— 这点很重要: 放在根域、放在子路径、甚至用 file:// 双击打开,都不会因为路径写死而白屏。

guidely-export/ ├── index.html // 站点入口,列出全部指南 ├── g/ │ ├── godaddy-renew-subscription.html │ └── ... ├── assets/ // 截图与样式,文件名带内容哈希 │ ├── a1b2c3d4e5f6.webp │ └── app-9f3c.css ├── 404.html.html ├── robots.txt.txt └── DEPLOY/ ├── cloudflare-workers.md ├── github-pages.md ├── object-storage.md └── nginx.md

最后一个目录是四份部署说明,内容就是这一页。写进包里是为了两年后你翻出这个 zip 时,不用回来找文档站还在不在。

包里没有编辑器,也没有指南源数据。免费档导出的 HTML 是编译后的静态 DOM,不含编辑入口;Pro 档多一个.json,那是给你重新导入用的源文件。两种都不含我们的运行时。

二 · 部署到 Cloudflare Workers

免费额度不限请求数与带宽,自带 *.workers.dev 临时域名, 不用买域名也不用配 DNS。这是我们现在用的方式。

bash · 首次
# 解压,然后进目录
unzip guidely-export.zip -d my-docs
cd my-docs

# 建一个只挂静态资产的配置文件
cat > wrangler.jsonc <<'EOF'
{
  "name": "my-docs",
  "compatibility_date": "2026-10-19",
  "assets": { "directory": "./" }
}
EOF

# 部署(会开浏览器让你登录一次)
npx wrangler deploy

跑完会打印一个 https://my-docs.<你的子域>.workers.dev, 这就是可用的地址。换自己的域名在 Dashboard 里 Custom domains 加一条 CNAME 即可,证书自动签。

compatibility_date 别写当天。本地 wrangler 的 workerd 二进制总比线上落后几天,日期超了会报ERR_RUNTIME_FAILURE,而错误信息藏在一堆 miniflare 堆栈里,很难看出是这个原因。 写当天减 3 天最稳。
包里没有 _headers 也能跑,但加一份更快。带哈希的资源可以长期缓存,HTML 不行 —— 否则你改了指南,访客还看到旧的。
/assets/*
  Cache-Control: public, max-age=31536000, immutable

/*.html
  Cache-Control: no-cache

三 · 三个必踩的坑

1 · 404 不是配置问题,是没有服务端路由。纯静态站没有 try_files,访问 /g/foo 时服务器只会去找同名文件。 所以导出的链接一律带 .html,别自己改成 Pretty URL。

2 · MIME 不对会让 HTML 变成下载。Nginx 少了 include mime.types、对象存储把 .html 存成application/octet-stream,浏览器就会弹下载框而不是渲染。 上传对象存储时务必指定 Content-Type: text/html; charset=utf-8。

3 · 直接双击 index.html 会白屏。浏览器的 file:// 协议会拦住一部分 fetch 与模块加载。 想本地看,跑 npx serve . 起个静态服务器,别双击。

四 · 上线后自检

替换成你的域名跑一遍,看状态码和 content-type:

bash · 自检
for p in / /g/ /assets/ /404.html; do
  printf "%-14s " "$p"
  curl -s -o /dev/null -w "%{http_code}  %{content_type}\n" "https://你的域名$p"
done

四份文档的其余三种(GitHub Pages、对象存储、Nginx)在导出包的 DEPLOY/cloudflare-workers.md 同级目录里,需要时再翻。