起因很简单:域名根路径 qinsiran.online 原本被门户登录页占着,博客屈居 / 子路径。但对一个以内容为主的站点来说,访客进门第一眼看到的应该是文章,而不是一个登录框。于是做了这次改造。

改了什么

  1. 博客挪到根路径:打开 qinsiran.online 直接就是博客首页;
  2. 门户搬进 /portal/:原来的登录页与服务列表整体迁到 qinsiran.online/portal/,功能不变;
  3. 独立登录页 /login/:登录不再嵌在首页 hero 区,有了自己的页面;
  4. 服务迁入独立子域:OpenList、MCSManager、AstrBot、ZCode 等都有了各自的子域名(如 zcode.qinsiran.online),门户与主域的路径式入口作为兼容保留;
  5. 旧链接不失效:/ 前缀的老地址依然可用,书签不用改。

实现思路

静态博客做这类改造有个天然优势:产物就是一堆静态文件,同一份构建结果可以按不同前缀各伺服一份:

  • / 直接挂原始构建产物(站内链接带 / 前缀);
  • 根路径挂一份同步副本,同步时把产物里的 /xxx 前缀批量重写成 /xxx,并在导航里注入登录入口。

nginx 侧则是把主域 server 块的兜底 location / 从「门户单页」换成「博客静态目录 + try_files 兜底」,再配合 sub_filter 在 HTML 里注入备案页脚。门户移到 /portal/ 只是一个新的 alias location,认证逻辑原封不动。

顺带的好处:站内所有绝对路径链接(如 /posts/xxx/、/archives/)在两个部署下都能到达同一篇内容,写文章时不用再纠结链接前缀。

老地址去向

老地址 现状
/** ✅ 保留,内容与首页一致
/portal/ ✅ 门户新家
/mma/ ❌ MathModelAgent 已下架(410)
/dsh/ ❌ dsh 已下线,工作台职能由 zcode.qinsiran.online 接替

写在最后

这次改造没有引入任何新组件,只是重新安排了已有静态产物的伺服位置——很多「架构升级」其实就是这样:不添东西,只挪位置。各服务的最新入口见服务导航页。