目录

域名迁移记录:从 walson.xyz 到 walson.de5.net

写在前面

今天把博客主域名从 walson.xyz 迁到了 walson.de5.net

这次迁移的原因很现实:walson.xyz 快到期了,续费价格不划算(要几百块)。
对个人博客来说,我更希望的是“稳定、低成本、可长期维护”,所以我决定切到一个可长期使用的二级域名。


我的目标

这次不是“换个名字”这么简单,我给自己定了三个目标:

  1. 域名可长期使用,不再被高续费绑架。
  2. 尽量不改现有部署链路,避免给未来增加维护负担。
  3. 切换完成后,访问、HTTPS、SEO 基本项都正常。

最终方案

我采用的是:

  • Cloudflare 负责 DNS
  • Vercel 继续负责站点部署
  • Hugo 生产 baseURL 改为 https://walson.de5.net/

这样做的好处是:

  • 博客部署方式不用推倒重来。
  • DNS 和域名策略更灵活,后续迁移平台也更容易。
  • 成本可控,长期心智负担更低。

今天实际做了什么

1. 先改代码里的生产域名

我把站点生产配置统一改成了新域名:

  • config/production/config.tomlbaseURL
  • 文档里引用旧域名的位置(避免后续误导)

然后提交、推送、触发生产部署。

2. 在 Vercel 侧绑定新域名

walson.de5.net 绑定到当前生产项目和部署上,确认别名指向正确。

3. 在 Cloudflare 写 DNS

核心记录是:

  • A walson.de5.net -> 76.76.21.21(Vercel 推荐)

配置完成后,验证:

  • https://walson.de5.net 返回 200
  • 页面内 canonical/OG 链接是新域名

4. 下线旧域名入口

walson.xyz / www.walson.xyz 从 Vercel 别名中移除,避免流量继续进入旧域名。


过程中踩到的坑

坑 1:Vercel 显示域名“已占用”

表现:绑定新域名时报错,提示该域名已经分配给其他项目。
处理:先排查域名当前归属,再把它切到目标项目。

坑 2:DNS 记录写入后,解析值看起来不直观

这个过程里最容易慌的是“看起来和预期不一致”。
我的经验是别只看单点结果,要同时看这三件事:

  1. Cloudflare 里目标记录是否已存在
  2. Vercel 域名配置是否判定为 misconfigured: false
  3. 实际 https://域名 是否 200 且内容正确

只要这三项成立,基本就是可用状态。


迁移后的部署流程(重点)

迁移后我的部署流程几乎没变,还是这两种:

  1. git push origin master(自动触发 Vercel 生产部署)
  2. npm run deploy:prod(手动生产部署)

只要 Cloudflare 的那条 A 记录不动,这套流程就能长期用下去。


给未来自己的备忘

如果某天又要换平台,按这个顺序做最稳:

  1. 先改 baseURL
  2. 再部署
  3. 再切 DNS
  4. 最后下线旧域名

顺序对了,迁移就是“可控的工程动作”,不是“线上事故”。


结语

这次迁移对我来说,不只是技术动作,更是一次成本和长期维护策略的调整。

个人博客本质上是长期工程。
能持续写下去、稳定访问、成本可控,比“看起来很高级”的方案更重要。