不同的baseurl服务器发布办法
此方法不实用
第一步:修改主配置文件 _config.yml
请从主配置文件的 deploy 列表中删除 ZZ.AC 的那三行。修改后的末尾应该像这样:
YAML
1 2 3 4 5 6 7 8 9 10 11 12 13
| 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
1 2 3 4 5 6 7 8
| 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
| @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 的配置改回最标准的形式,不再需要那个“万能后备”处理了:
代码段
1 2 3 4 5
| :8080 { handle_path /blog* { reverse_proxy localhost:8082 } }
|
最后一步建议: 由于使用了 Git 方式发布到 ZZ.AC,请确保 ZZ.AC 端的 Git 仓库配置了 post-receive 钩子,以便在你推送代码后,它能自动把文件同步到 8082 端口对应的 Web 目录中。
本文作者:BOSh
本文链接:http://bosh.zz.ac/posts/3722380822.html
版权声明:本文由BoSh发布,部分内容来源于网络。