为 Github 上的 Hexo 博客绑定个性域名

    Hexo

使用 Hexo 部署博客之后,尽管可以通过 https://你的用户名.github.io 来访问,但由于各种各样的原因,博主们通常倾向于更换这个教条式的域名,使用属于自己的个性域名。以下就是一个简单的教程。


域名购买

推荐到 namesilo 上注册账号购买,不仅比 Godaddy 便宜,本身还免费提供隐私服务(即不公开域名持有者的信息)。对了, namesilo 支持支付宝付款。


创建 CNAME 文件

使用 hexo d 命令部署时,实际上是将 ~/Documents/blog/public 文件夹的内容 push 到 [username].github.io 上,这样会把 CNAME 文件覆盖掉,而把 CNAME 文件添加到 source 文件夹里,可以避免这种情况。

~/Documents/blog/source 目录下新建 CNAME 文件

$ cd ~/Documents/blog/source
$ touch CNAME

编辑 CNAME 文件,输入你购买的域名,比如 cps.ninja(没错,整个 CNAME 文件只有一个顶级域名,没有别的内容)

然后把 CNAME 文件部署到 Github 上

$ hexo clean
$ hexo g
$ hexo d

设置域名

访问 namesilo(或是你购买域名的网站),登陆你的账户,进入设置域名的控制台,做如下设置

@          A             192.30.252.153
@          A             192.30.252.154
www      CNAME           chpwang.github.io

效果如图:

其中 192.30.252.153192.30.252.154 都是 Github 的地址(该地址现已改变,Github 最新的 IP 地址参见这里),而最后一行的 chpwang.github.io 你要换成 你的用户名.github.io(更多详细内容参见 Github 官方文档)。

至此,个性域名设置完毕,只需等待生效即可。

上图 Type 一栏说明
    A:  用来指定域名为 IPv4 的地址(如:8.8.8.8),如果需要将域名指向一个IP地址,就需要添加 A 记录
 AAAA:  与上述 A 记录的区别是,AAAA 记录用来指定域名为 IPv6 的地址(如:2001:DB8:2de:0:0:0:0:e13)
CNAME:  如果需要将域名指向另一个域名,再由另一个域名提供 ip 地址,就需要添加 CNAME 记录

解释:

  • 总的来说,设置 A 记录的意思是,当我输入 cps.ninja 这个域名的时候,访问的是 192.30.252.153 这个地址;
  • 而设置 CNAME 的意思是说,当我访问 chpwang.github.io 这个地址的时候,会跳转到 cps.ninja,之后的过程就和 A 记录相同了,即访问 192.30.252.153

P.S.
1、如果你希望将博客部署在国内,可以考虑使用 Coding
2、部署在国内的博客,要注意 CSS 里的字体调用可能因网络问题加载失败;
3、可以用 DNSPod 而不是自带的域名解析服务,参考这里
4、知乎上的这个回答也描述了绑定域名的事,也可以看看;

关于这里域名设置的更多知识和详情,还可参考以下链接:


后续可能遇到的问题

有时候使用 hexo d 部署更新博客之后,会出现绑定的域名指向 github 404 的情况。使用 username.github.io 能正常访问博客页面,但使用自定义域名(比如 cps.ninja)则会出现 github 404 页面。

如果不是上面提到的 CNAME 文件被覆盖掉的问题,那原因可能是 Github Pages 的 Settings 下 Custom domain 清空了,需要重新设置。

到博客的 repository 页面的 Settings -> Pages -> Custom domain 输入域名,应该就解决了。如果失败提示 “the CNAME is already taken”,那就需要去 GitHub Support ,选择 Help with a custom domain 发 ticket(工单)求助。

求助前最好要先认证你的域名,确定这个域名的所有权确实在你那。具体操作是: 头像 -> Settings -> Pages -> Add a domain ,然后根据提示,去域名服务商那里新增一个 TXT 的 DNS 解析记录进行验证。
更详细的操作请查看 Verifying your custom domain for GitHub Pages

参考链接:
github pages 出现 “the CNAME is already taken” 的解决办法
GitHub Pages 对自定义域名支持 HTTPS
GitHub Pages使用问题 - 自定义域名已被占用


打赏