目录
前言&问题描述
近期给 Github Page 上托管的静态网站映射了自定义域名(aiproducthome.top),之后发现每次更新并部署 hexo 到 Github Page (hexo d
)后就会出现自定义域名失效的问题。
原因也非常简单,当你在 Github Page 上映射了域名后,Github Page 会在你的仓库下自动生成一个 CNAME 文件(如果你的 Github Page 是在其他分支,则是在其他分支下生成 CNAME 文件)。
举例来说,我的 Github Page 部署在 gh-pages 分支下,所以可见该分支下由 Github Page 服务生成了一个 CNAME 文件,该文件的内容是你的自定义 apex 顶级域名
但是由于我们本地并没有这个 CNAME 文件,所以每次部署的时候就会把这个远端的 CNAME 给覆盖掉,所以导致了失效。
解决方案
在根目录下的 source
文件中添加 CNAME
文件,并在文件中输入你的 apex 域名(没有前缀的域名,如 aiproducthome.top),最后保存。
然后重新部署并提交至 Github 仓库即可。
细节
当我们执行 hexo g
时,实际上是把资源文件(如 source,extend ... 文件夹内容)都复制到了一个叫做 public
的文件夹中,当我们执行 hexo d
时,实际上是把 public
和 extend
文件夹的内容又都复制到 .deploy_git
文件夹中,而这个文件夹就会被推送到远程仓库,你可以看到这个文件夹的内容和远程仓库一样的。