目錄
- 前言&問題描述
- 解決方案
- 細節
前言&問題描述
近期給 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
文件夾中,而這個文件夾就會被推送到遠程倉庫,你可以看到這個文件夾的內容和遠程倉庫一樣的。