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

需要做两件事。

① 把图片文件传过来

bash
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/

② 批量替换文章里的地址

sql
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:

bash
docker run -d --name halo -p 8090:8090 \
  -v ~/.halo:/root/.halo \
  --restart=always \
  halohub/halo:2.15

导入数据、改路径、看效果,全部验证通过再动线上。

验证清单

  1. 文章列表能正常显示
  2. 随机打开 5 篇,图片都能加载
  3. 分类页、标签页能打开
  4. 旧 URL 有 301 跳转
  5. 新站 sitemap 能访问
俗人源码网免责声明:

1、本站所有资源均收集于互联网,分享目的仅限学习与参考。如有侵权,请联系 1685698671@qq.com 及时删除!

2、本站资源不保证完整性和安全性,下载后请自行检测。使用过程中出现的任何问题均与本站无关,敬请自行处理。

3、本站资源仅限个人学习研究使用,严禁用于任何违法违纪用途。因使用者违规使用产生的一切后果,由使用者自行承担,本站不承担任何责任。