不同的baseurl服务器发布办法
此方法不实用
第一步:修改主配置文件 _config.yml
请从主配置文件的 deploy
列表中删除 ZZ.AC
的那三行。修改后的末尾应该像这样:
YAML
# ... 前面保持不变 ...
url: http://zsb.hidns.co
root: /
deploy:
- type: git
repo: git@github.com:zhisibi/zhisibi.github.io.git
branch: main
- type: git
repo: ssh://luoyuqisi@s1.ct8.pl/home/luoyuqisi/repos/blog.git
branch: main
# ... 后面保持不变 ...
第二步:新建
ZZ.AC 专用配置文件 _config.zzac.yml
在博客根目录下新建这个文件。它只需要包含差异部分,Hexo 在运行时会自动用它覆盖主配置:
YAML
# 专门针对公益主机的差异化配置
url: https://lab.bosh.zz.ac/blog
root: /blog/
deploy:
- type: git
repo: ssh://bosh@lab.bosh.zz.ac/home/bosh/repos/blog.git
branch: main
第三步:更新自动化脚本
博士日常博客管理系统.bat
这个脚本会通过两次“清理-生成-发布”流程,确保不同站点的路径完全隔离,互不干扰。
Bash
@echo off
chcp 65001 >nul
:menu
cls
echo ==========================================
echo 博士日常博客管理系统 (Windows)
echo ==========================================
echo 1) 写新文章 (hexo new)
echo 2) 本地预览 (hexo s)
echo 3) 全线发布 (GitHub + ct8.pl + ZZ.AC)
echo 4) 备份源码 (git push)
echo 5) 清理缓存 (hexo clean)
echo 6) 退出
echo ==========================================
set /p choice=请选择操作 [1-6]:
if "%choice%"=="1" goto new_post
if "%choice%"=="2" goto preview
if "%choice%"=="3" goto deploy_all
if "%choice%"=="4" goto backup
if "%choice%"=="5" goto clean
if "%choice%"=="6" goto exit
goto menu
:new_post
set /p title=请输入文章标题:
call hexo new "%title%"
pause
goto menu
:preview
echo 正在启动预览 (http://localhost:4000)...
call hexo s
goto menu
:deploy_all
echo >>> 正在清理并为 GitHub/ct8.pl 生成静态文件...
call hexo clean
call hexo g
echo >>> 正在发布至 GitHub & ct8.pl (Root: /)...
call hexo d
echo.
echo >>> 正在为 ZZ.AC 生成专用文件 (Root: /blog/)...
call hexo clean
:: 核心:同时加载两个配置
call hexo g --config _config.yml,_config.zzac.yml
echo >>> 正在发布至 ZZ.AC...
call hexo d --config _config.yml,_config.zzac.yml
echo ==========================================
echo 恭喜!所有服务器同步完成。
echo ==========================================
set /p b_choice=是否顺便备份源码到 Git? [y/n]:
if /i "%b_choice%"=="y" goto backup
pause
goto menu
:backup
echo >>> 正在备份源码到远程仓库...
git add .
set /p msg=请输入提交信息 (直接回车使用当前日期):
if "%msg%"=="" set msg=Backup_%date%
git commit -m "%msg%"
git push origin main
echo 源码备份成功。
pause
goto menu
:clean
call hexo clean
echo 缓存已清理。
pause
goto menu
:exit
exit
这个方案如何解决你的问题?
路径自动修正:当执行带有
_config.zzac.yml的命令时,Hexo 会把所有的内部资源链接(如/css/main.css)自动重写为/blog/css/main.css。这样你在点击博文时,URL 就会变成.../blog/2025/12/31/...,从而被 Caddy 准确捕获。避免误伤:在发布 GitHub 时,脚本只用了原配,所以 GitHub 上的页面链接依然是干净的根路径。
Caddyfile 简化:现在你可以把 Caddy 的配置改回最标准的形式,不再需要那个“万能后备”处理了:
代码段
:8080 { handle_path /blog* { reverse_proxy localhost:8082 } }
最后一步建议: 由于使用了 Git 方式发布到
ZZ.AC,请确保 ZZ.AC 端的 Git 仓库配置了
post-receive
钩子,以便在你推送代码后,它能自动把文件同步到 8082
端口对应的 Web 目录中。