WordPress 用了几年,插件越装越多,打开后台要等三秒。换到 Halo 之后清爽不少。
但迁移过程不算顺利,主要是附件路径这一步。
为什么要迁
三个原因:后台太慢(插件 20 多个)、数据库越来越大、想要个更轻的编辑器。
Halo 是 Java 写的,安装包 40M,跑起来内存占用 300M 左右。对比 WordPress 的 500M,省一半。
迁移步骤
第一步:导出数据
Halo 后台有「从 WordPress 导入」功能,支持 XML 和 Markdown 包。
WordPress 后台 → 工具 → 导出 → 下载 XML。
注意:XML 只包含文章内容和元数据,不包含图片文件。 图片要自己打包。
第二步:导入
Halo 后台 → 工具 → 迁移 → WordPress → 上传 XML。
导入完成后:文章都在、分类和标签都在、图片链接全部指向旧域名。
第三步:改附件路径(最容易漏)
导入后的文章里,图片地址还是:
https://旧域名/wp-content/uploads/2020/01/xxx.jpg
需要做两件事。
① 把图片文件传过来
cd /www/wwwroot/旧站
tar -czf uploads.tar.gz wp-content/uploads/
scp uploads.tar.gz root@新服务器:/tmp/
tar -xzf /tmp/uploads.tar.gz -C /path/to/halo/attachments/
② 批量替换文章里的地址
UPDATE extensions SET spec = REPLACE(
spec,
'https://旧域名/wp-content/uploads',
'https://新域名/upload'
) WHERE spec LIKE '%旧域名%';
这一步漏了,文章里全是破图。
伪静态配置
Halo 的伪静态比 WordPress 简单,不需要 PHP:
location / {
proxy_pass http://127.0.0.1:8090;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
旧 URL 怎么办
WordPress 的 URL 是 /archives/123 或 /2020/01/xxx,Halo 默认是 /archives/xxx。
旧链接会 404,已经收录的会掉。 三个办法:
① 保持 URL 结构一致 —— Halo 后台可以设置固定链接格式,尽量对上。
② 写 301 规则
rewrite ^/\d{4}/\d{2}/(.*)$ /archives/$1 permanent;
③ 旧站不要马上关 —— 保留 3 个月,持续做 301。搜索引擎需要时间更新索引。
数据对比
| 项目 | WordPress | Halo |
|---|---|---|
| 后台响应 | 2-3 秒 | 0.3 秒 |
| 内存占用 | 500M | 300M |
| 文章导入 | — | 支持 XML |
| 图片 | 媒体库 | 附件目录 |
| 插件生态 | 5 万+ | 300+ |
插件少是缺点也是优点——少了很多折腾。
建议
迁移前先在本地跑一遍完整流程。 用 Docker 起一个 Halo:
docker run -d --name halo -p 8090:8090 \
-v ~/.halo:/root/.halo \
--restart=always \
halohub/halo:2.15
导入数据、改路径、看效果,全部验证通过再动线上。
验证清单
- 文章列表能正常显示
- 随机打开 5 篇,图片都能加载
- 分类页、标签页能打开
- 旧 URL 有 301 跳转
- 新站 sitemap 能访问
1、本站所有资源均收集于互联网,分享目的仅限学习与参考。如有侵权,请联系 1685698671@qq.com 及时删除!
2、本站资源不保证完整性和安全性,下载后请自行检测。使用过程中出现的任何问题均与本站无关,敬请自行处理。
3、本站资源仅限个人学习研究使用,严禁用于任何违法违纪用途。因使用者违规使用产生的一切后果,由使用者自行承担,本站不承担任何责任。



评论(0)