技术

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

昨天尝试了下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直接跳转到 GHOST_URL/ 上就可以了,在主题的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会自动放到根目录。

您已成功订阅 HADB.ME
真棒!下一步,完成结账以便解锁 HADB.ME
欢迎回来!您已登录成功。
登录失败,请重试。
操作成功!您的账户已全面激活,现在您有所有内容的权限了。
错误!Stripe 结账失败。
成功!您的账单信息已更新。
错误!账单信息更新失败。