hexo deploy 把站点推成空白?因为用管道看了部署日志
现象:部署"成功",站点消失一次例行的内容更新,跑完 hexo g 和 hexo deploy,日志最后几行是熟悉的:
1INFO Deploy done: git
刷新线上地址——404。换几个文章页,全是 404。首页偶尔返回 200 但是空白。
登录 GitHub 看部署仓库,最新 commit 是:
1Site updated: 2026-10-23 15:06:59
时间戳是最新的,看起来推成功了。但点进去看文件树——空的。没有 index.html,没有 posts/,只有一个 .git。
根因:工作区被清空,然后推了个空提交hexo-deployer-git 的机制是:把 .deploy_git 当作一个独立的 git 工作区,每次部署时把 public/ 的内容同步进去,然后 commit + push。
关键点在于同步的方式:它不是增量覆盖,而是先清理工作区(相当于 git rm -r 全部内容 + 复制新文件),再提交。这个设计本身没问题——它保证删除的文章不会残留。
问题出在中断。
如果进程在「清空工作区」之后、「复制新文件」完成之前被杀 ...
Hexo 换域名后 canonical 和 sitemap 还指着旧域?完整迁移清单
换个域名,比想象中麻烦博客从 blog.demo.fan 迁移到 blog.demohappy.top。这件事看起来就是把 _config.yml 里的 url: 改一行、重新部署。
改完确实生效了——页面能打开,只是有两件事没跟着走。
第一件:搜索结果里点进来,<link rel="canonical"> 还指着 blog.demo.fan。这意味着搜索引擎会认为新域名上的每一页都是旧域名内容的副本,新域名的权重永远是零。
第二件:sitemap.xml 里 149 条 URL,全部是旧域。
为什么会这样:三类引用的生命周期不同把「站点里出现的域名」按来源分类,会发现它们的更新方式完全不同:
类型
来源
改 url: 生效吗
canonical / og:url / JSON-LD / sitemap
模板运行时读 config.url
✅ 重新生成即生效
copyright_url(每篇 front-matter)
文章里的字面量
❌ 永远不会变
robots.txt 的 Sitemap: 行
源文件 ...