从 WordPress 到 Astro:一次把博客“搬回自己手里”的迁移记录
这两天,我终于做了一件拖了很久的事:
把原来基于 WordPress 的博客,完整迁移到了 Astro,并通过 GitHub 自动部署到 Cloudflare Pages(免费)。
这不是一次“追新技术”的冲动升级,而更像一次回归——
把写博客这件事,从“维护系统”,重新拉回到“专心写字”。
一、为什么离开 WordPress?
WordPress 本身并不糟糕,它的问题在于:
当你只想写博客时,它给你的东西实在太多了。
-
数据库
-
PHP
-
插件
-
主题
-
更新
-
安全
-
兼容性
久而久之,你会发现:
写一篇文章之前,先要确认系统“还活着”。
而我想要的,其实很简单:
一个我随时能写、
不写也不会坏、
几年不碰也能马上接上的博客。
这正是我选择 Astro 的原因。
二、Astro 带来的变化
从 WordPress 切换到 Astro,本质上是一次思维方式的转变:
| WordPress | Astro |
|---|---|
| 博客是“系统” | 博客是“项目” |
| 内容在数据库里 | 内容就是文件 |
| 后台管理 | Git 管理 |
| 点击发布 | git push |
Astro 是一个静态站点生成器,没有数据库、没有后台,所有内容都以 Markdown 的形式存在本地。
博客不再是“托管在某个平台上的东西”,而是一个完全属于自己的代码仓库。
三、迁移过程:没有自动化,反而更安心
我并没有使用 WordPress 导出工具去自动转换文章,原因很简单:
-
HTML 太杂
-
样式太重
-
清理成本反而更高
最终选择了最“笨”的方式,但也是最干净的方式:
-
打开旧的 WordPress 文章
-
复制正文内容
-
新建一个
.md文件 -
手动整理格式和图片
-
补上文章的 frontmatter
例如:
---
title: "从 WordPress 到 Astro"
pubDate: 2025-01-05
description: "记录一次博客系统迁移"
tags: ["Blog", "Astro", "Cloudflare"]
---
慢一点,但每一篇都重新“过了一遍手”。
四、项目结构(迁移后)
迁移完成后,我的博客结构大致如下:
astro-blog/
├─ public/
│ └─ images/
│ └─ blog/
├─ src/
│ └─ content/
│ └─ blog/
│ ├─ first-post.md
│ └─ second-post.md
├─ astro.config.mjs
└─ package.json
几个非常容易踩坑的点:
-
Markdown 文章统一放在
src/content/blog/ -
图片放在
public/images/blog/ -
Markdown 中图片路径写
/images/blog/xxx.jpg -
不要写
public/images/...(构建后路径会错)
五、Git:博客的“发布按钮”
使用 Astro 之后,“发布博客”这件事变得非常直接:
写完文章 = 提交代码
这是我特意给未来的自己留的操作备忘:
git status
git add .
git commit -m "add new blog post"
git push origin main
没有后台、没有按钮、没有“是否发布成功”的焦虑。
只要 push 成功,博客一定会更新。
六、Cloudflare Pages:真正的“无感部署”
当 GitHub 仓库和 Cloudflare Pages 绑定完成后,整个流程变成:
写文章 → 保存 → git push → 等几十秒 → 全球可访问
Cloudflare Pages 的核心配置也非常简单:
-
Framework:Astro
-
Build command:
npm run build -
Output directory:
dist
配置一次,之后几乎不需要再碰。
七、关于域名和重定向的小插曲
迁移过程中,最花时间的反而不是代码,而是域名:
-
根域名 vs
www -
Cloudflare DNS
-
Pages 自定义域
-
Astro 的
site配置
这些配置叠加在一起,很容易出现“明明没写规则,却在自动跳转”的情况。
最终的经验是:
-
明确一个主域名
-
另一个只做跳转
-
Astro 的
astro.config.mjs中把site写清楚
这一部分,比写文章还考验耐心。
八、迁移完成之后
现在我的博客状态是:
-
本地 Markdown 写作
-
Git 管理所有历史
-
Cloudflare 免费全球 CDN
-
没有服务器、没有数据库、没有维护成本
最重要的是:
博客重新变成了一件“轻的事情”。
我不需要每天想着“系统要不要更新”,只需要在想写的时候,打开编辑器。
结语
如果你也正在被 WordPress 的复杂度消耗,或者只是想让博客重新变得简单一些,
那么 Astro + GitHub + Cloudflare Pages 可能是一个值得尝试的组合。
至少对我来说,这次迁移不是升级,而是一种把博客重新拿回来的感觉。