从 WordPress 迁移到 Halo 的心路历程
引言
说出来你可能不信,我这个博客从 WordPress 迁移到 Halo 已经快半年了。之前一直想写篇文章记录一下,但总是拖拖拉拉的。最近正好有空,就坐下来好好聊聊这次迁移的前因后果。如果你也在考虑换博客系统,或者对 Halo 感兴趣,希望能给你一些参考。
当初为什么要用 WordPress
说起我和 WordPress 的故事,那可得追溯到七八年前了。那时候刚入行不久,觉得自己得有个博客来记录学习笔记。选来选去,最后选了 WordPress,主要原因是网上教程多,遇到问题容易找到答案。
说实话,WordPress 确实挺好用的。主题多、插件丰富,基本上你想实现的功能都能找到对应的插件。我当时装了一堆插件,什么 SEO 优化的、缓存加速的、安全防护的、林林总总加起来有二三十个。博客跑起来倒是挺像那么回事,但总感觉越来越臃肿。
让我下定决心迁移的几个原因
1. 性能问题实在忍不了了
我那个 WordPress 博客,到后来打开速度越来越慢。明明文章也不多,也就一两百篇,但首屏加载时间经常要三四秒。我试过各种优化手段,什么数据库优化、图片压缩、CDN 加速、缓存插件,能上的都上了,效果也就那样吧。
后来我仔细研究了一下,发现问题出在插件太多 + 主题本身太重。每次页面加载,都要跑一堆 PHP 代码,执行几十个插件的钩子,你想快也快不起来。
2. 维护成本越来越高
WordPress 虽然安装简单,但维护起来是真的累。每个月都要关注安全更新、版本更新、插件更新。一旦哪个插件和 WordPress 版本不兼容,整个站点就可能出问题。
我有一次就是偷懒没及时更新,结果网站被植入了一段恶意代码,访问的时候浏览器直接报警。那时候大半夜的在公司加班,接到朋友电话说我的博客有毒,差点没把我吓死。从那以后我对 WordPress 的安全性就有了心理阴影。
3. 只是想安静写点东西
到后来我开始反思,我到底需要什么?不就是写写文章,记录一下学习心得吗?我需要那么复杂的功能吗?
答案显然是否定的。我不需要电商功能,不需要会员系统,不需要复杂的评论过滤。我只需要一个能让我安安静静写 Markdown 的地方。
为什么选了 Halo
在决定迁移之后,我开始物色新的博客系统。前前后后试用了好几个,有 Hexo、Hugo、Typecho,还有今天的主角 Halo。
选 Halo 主要有几个原因:
第一,它是国产的。 不是说国产的就一定好,但至少文档是中文的,遇到问题在中文社区提问也方便。我之前用 Hexo 的时候,很多问题都要去 Stack Overflow 搜,效率很低。 第二,Halo 是 Java 开发的。 虽然我主要写 Python,但 Java 毕竟是我的老本行,部署维护起来比较顺手。 第三,Halo 支持 Markdown。 这点对我很重要,我写东西习惯了用 Markdown,WordPress 虽然也能用 Markdown 插件,但体验始终不如原生支持的好。 第四,Halo 很轻量。 没有那么多花里胡哨的功能,但该有的都有。主题虽然不如 WordPress 多,但胜在简洁高效。迁移过程实录
迁移过程比我想象的要顺利一些,当然也踩了几个坑。
第一步:导出数据
WordPress 有自带的导出功能,可以把文章、评论、页面都导出成 XML 文件。操作路径是:仪表盘 → 工具 → 导出 → 选择"所有内容" → 下载导出文件。
Halo 官方提供了一个导入工具,可以把 WordPress 导出的 XML 文件导入进来。不过实测下来,效果一般般,有些文章格式会有问题。
我的做法是:
1. 用 WordPress 导出所有文章
2. 用 Halo 的导入工具导入大部分内容
3. 手动处理导入失败的或者格式有问题的文章
手动处理大概花了半天时间,主要是一些图片链接和代码块的格式需要调整。
第二步:处理图片和附件
这是最麻烦的部分。WordPress 默认把图片上传到 wp-content/uploads 目录下,文章中的图片都是绝对路径。
Halo 的附件管理方式不太一样,需要把图片上传到 Halo 的后台,或者配置外部存储。
我当时的做法是把原来的图片全部下载下来,然后通过 Halo 的后台一个一个上传。这是个体力活,如果有几百篇文章的话确实够呛。
这里给个小建议:如果你的图片比较多,可以考虑使用对象存储(如阿里云 OSS、腾讯云 COS),然后在文章里直接用外链。这样迁移的时候就只需要改改域名就行了。
第三步:配置主题和评论
Halo 的主题系统比 WordPress 简单多了。我选了一个叫「Paper」的主题,简洁大方,很符合我的胃口。
评论系统 Halo 自带的效果就不错,我稍微配置了一下评论过滤规则,把一些敏感词加入黑名单,就没再管了。
第四步:SEO 调整
这块我大概花了半天时间。主要做了以下几件事:
- 验证百度站长平台和 Google Search Console
- 配置 robots.txt
- 设置 sitemap
- 调整文章永久链接格式,保持和原来一致(这点很重要,避免已有外链失效)
第五步:301 重定向
原来的文章链接是 https://example.com/2023/01/post-name/ 这种格式,Halo 默认的链接格式是 https://example.com/p/post-name/。
为了不影响 SEO,我配置了 Nginx 的 301 重定向,把旧链接自动跳转到新链接:
location / {
# 匹配 /2023/01/xxx/ 格式的链接
if ($uri ~ ^/(\d{4})/(\d{2})/(.+)/$) {
return 301 /p/$3/;
}
}
这样搜索引擎就会慢慢把权重转移到新链接上。
迁移后的体验
用了半年 Halo,整体感受就一个字:爽。
速度快了不是一点半点。 现在博客首屏加载时间基本在 1 秒以内,有时候甚至不到 500ms。之前用 WordPress 的时候要三四秒,这体验提升还是很明显的。 后台写作体验很好。 Halo 的编辑器支持 Markdown,实时预览功能也很实用。我现在写文章都是直接在后台写,写完点个发布就完事了,比之前方便太多。 维护成本大幅降低。 半年了,我只更新过一次版本,基本上属于"装完就不管"的状态。不用担心插件冲突,不用天天盯着安全更新, 省心。当然 Halo 也有一些小问题,比如主题和插件没有 WordPress 丰富,但对我来说完全够用。毕竟我只需要一个能写博客的地方,不需要那么多花哨的功能。
总结
从 WordPress 迁移到 Halo,是我做过最正确的决定之一。虽然迁移过程花了点时间,但后期的体验完全值得。
如果你也在考虑换博客系统,我的建议是:想清楚自己真正需要什么。 如果你需要复杂的电商功能、多用户系统,那 WordPress 仍然是最好的选择。但如果你只是想安静地写点东西,记录一下学习心得,Halo 这种轻量级的博客系统绝对值得一试。
好了以上就是我的迁移经历分享,希望能给你一些参考。如果有什么问题,欢迎在评论区留言,我们下次再见!
从 WordPress 迁移到 Halo 的心路历程
本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
评论交流
欢迎留下你的想法