为 Github 上的 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.153 和 192.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、知乎上的这个回答也描述了绑定域名的事,也可以看看;
关于这里域名设置的更多知识和详情,还可参考以下链接:
- 从 DNS 到 github pages 自定义域名 – 漫谈域名那些事
- How to setup Github Pages to redirect DNS requests
- 从搭建hexo个人博客过程中理解学习DNS解析
- hexo绑定个人域名之后,不能访问,已经解决
后续可能遇到的问题
有时候使用 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使用问题 - 自定义域名已被占用
打赏