在 GitHub 上为 Hexo 配置自定义域名

490 字
3 分钟
...阅读
...评论

昨天尝试了下 Hexo,感觉很酷。主要有以下几个特点:

  1. 无需数据库,所有文章都可以基于 git 来存储
  2. 纯静态,在编写好文章之后,生成静态文件,对服务器基本没要求
  3. 部署简单,hexo generate --deploy,轻松完成生成、部署功能
  4. 主题丰富,界面简洁,相比臃肿的 WordPress,爽多了

安装很简单,按照这里的教程,进行就可以了。前提是确保 npm 和 git 功能都能用就行。我主要分享一下在配置自定义域名所遇到的问题。

我是将其部署到 GitHub 上的,没有采用 hadb.github.io 作为 repo 名,因为我是想将网站叫做 HADB.ME,所以我就创建了一个 HADB.ME 的 repo。这和使用 hadb.github.io 有点区别。

使用 hadb.github.io 的话,master 分支是作为页面显示的分支的,而使用 HADB.ME 的话,是使用 ph-pages 分支作为显示的分支的。这时,只需在 ph-pages 分支的根目录放一个 CNAME 文件,内容就是hadb.me,然后将域名 cname 到 hadb.github.io,github 会自动判断出 HADB.ME 这个项目中有一个 CNAME,里面就是配的hadb.me,于是hadb.me就成功地变成了 HADB.ME 项目页面的域名了。这时,我们在_config.yml 中,就可以将 url 配为http://hadb.me/,root 为/。当然,这样会有一个问题,就是直接访问 http://hadb.github.io/HADB.ME/ 的时候,无法显示样式。这个可以这样解决,当访问路径是 http://hadb.github.io/HADB.ME/ 时,通过 js 直接跳转到 https://hadb.me/ 上就可以了,在主题的 head.ejs 文件中,</head>前加入如下代码:

<script>
  // Redirect to hadb.me
  if (window.location.hostname === 'hadb.github.io') {
    window.location.href = 'http://hadb.me/'
  }
</script>

还有一个问题是,每当我在 ph-pages 中创建一个 CNAME,每次 hexo deploy 之后,ph-pages 中的 commit 历史会重建,CNAME 文件就丢失了,为此我很苦恼。后来发现,只需要将 CNAME 文件放到source文件夹下,就可以了,每次 deploy 会自动放到根目录。

评论区
Copyright © Bean Deng