前言

如果将静态博客搭建到Github Page上,你会默认获得用户名.github.io的初始域名。

初始域名本身也具有一定的易读与易记的特性,但也有一些不方便之处。一方面,对于熟络github的访问者来说,它会透露你的github用户名;另一方面,对于不熟络github的访问者来说,他很难通过这个规律去熟记这个域名。如果出于一些理由,那么自定义域名就显得很有必要。

原理

关于自定义域名和 GitHub 页面 - GitHub 文档

如果你去搜索此类关键字,你会发现大部分文章的标题都是“更换域名”,这实际是有点不严谨的。github的官方文档的标题是“自定义域名”,阅读官方文档后会发现,实际上这只是做了一个域名的映射。对于本博客,使用ldm0715.github.io也是能够访问的,只是访问时会自动将ldm0715.github.io映射到hexo.gcnanmu3125.xyz上,也就是说Github Page的默认域名其实并没有失效,严格来说不能算更换的范畴。官方文档中说明的“自定义域名”,实际上就是添加了一个重定向的步骤。

步骤

需要提前说明的是,官方文档提供了基本的两种域名的重定向教程。

  • apex域,也称为一级域名,例如:example.com123.xyz

  • 子域,也称为二级域名。例如:www.example.comblog.123.xyz

网上很多文章实际上根本没有对此进行操作上的区分,而是将官方体现的两种方式都实践了,这是没有意义的,也是完全没必要的。个人只推荐使用子域,对于相对正式的要求(以example.com为例),可以使用www.example.com,而不推荐直接使用一级域名。接下来只会展示使用子域的步骤


  1. 在Hexo博客根目录的source文件夹下建立一个名为CNAME的文件,在文件中写入需要映射的域名。

    创建一个CNAME文件
  2. Hexo三连上传到github站点仓库。

    1
    hexo cl && hexo g && hexo d
    可在站点仓库中找到
  3. 去DNS处添加一个类型为CNAME的解析。

    Cloudflare为例,以下为本站的例子:

    • Type:CNAME
    • Name:hexo
    • Target: ldm0715.github.io
    添加一个CNAME文件
  4. 打开站点仓库 -> Settings -> Pages -> Custom domain

    进行Pages的设置

    Custom domain中填入CNAME文件中写入的域名,等待Github的DNS验证通过即可。

更改SSL/TLS的加密模式

在自定义了域名之后,如果出现多次恶性的重定向次数过多导致无法访问的错误的话,多半是因为SSL的问题了,因为大部分人都会勾选强制https的,但是由于域名解析回源使用的是HTTP链接,就会导致无休止的重定向。

Cloudflare为例,只需要在SSL/TLS加密选项中,将Flex策略转变为Full即可。

转变SSL加密策略为Full

注意事项

  1. 如果直接在站点仓库中创建CNAME文件,等到下次Push上传会被删除,因此不要这么做。
  2. 如果CNAME文件丢失,映射会立即失效。
  3. 不要去ping自己的博客的地址,因为Github page的地址是会变动的,详见官方文档
  4. 请根据自己的需要进行配置,建议直接参考官方文档官方文档