使用 Github Pages 的两个小技巧

将博客切换到 Hugo 之后,我使用 Github Pages 部署生成的静态网站文件。本文介绍使用 Github Pages 的两个小技巧。

一、绑定域名到 Github Pages 的正确姿势

假设你的 Github Pages 地址为 username.github.io。如果你想要绑定的是二级域名,比如 blog.maolu.one,则需要以下两个步骤:

  1. 在仓库的根目录创建文件,文件名:CNAME ,文件内容:blog.maolu.one ;
  2. 给域名添加 CNAME 记录,记录名:blog,记录值:username.github.io 。

按照以上步骤绑定的二级域名,等待 Github 自动签发好 Let’s Encrypt 证书后,可以正常在仓库的 Settings > Github Pages 中开启 Enforce HTTPS 选项。对于没有强迫症(不需要开启 Enforce HTTPS 功能),且域名管理服务商支持 CNAME Flattening 的人,也可以按照上述方法绑定根域名,CNAME 记录名为 @。

如果你想使用正确姿势绑定是根域名,比如 maolu.one,就会稍微复杂一些。

  1. 在仓库的根目录创建文件,文件名:CNAME ,文件内容:maolu.one ;
  2. 给根域名添加 4 个 A 记录,记录名:@,记录值分别为:185.199.108.153、185.199.109.153、185.199.110.153、185.199.111.153。这些 IP 地址有可能会改变,但频率应该会很低。
  3. 如果你的 www A 记录没有其他用处,建议添加 CNAME 记录名 www,值为 username.github.io 。

不论哪种类型的域名,仓库根目录的 CNAME 文件的设置会覆盖仓库的 Settings > Github Pages 中的域名设置。所以如果你在 Setting 中设置了域名,却没有 CNAME 文件,则该设置过一会儿就失效了。

如果你的 Github Pages 中的内容是用静态网站生成器生成的,需要注意在每次提交时,是否会移除 CNAME 文件。以 Hugo 为例,在 /static 目录中新增 CNAME 文件是最为保险的方式,因为不论如何提交,都会在网站的根目录也就是仓库的根目录生成此文件。

二、同一个账号开通多个 Github Pages

有很多教程中提到一个 Github 账户只能创建一个 Github Pages 仓库,这样的说法是不对的。因为除了通过创建 username.github.io 来自动创建 Github Pages 仓库的方式,还有其他方式创建 Github Pages 仓库:

  1. 创建一个普通公开仓库,名称随意。这里假设名称为 another.repo ;
  2. 在该仓库中,新增 gh-pages 分支,并将代码提交到此分支;此时,你就拥有了另外一个 Github Pages 仓库了,其网址为 username.github.io/another.repo ;
  3. 如同前文提到的绑定域名的方式一样,创建 CNAME 文件、增加 DNS 记录就可以绑定域名。

多个仓库绑定域名的方式如下图所示:

多个 Github Pages 绑定域名

有了多个仓库,我们就可以不需要新建 Github 账号,创建另外的 Github Pages 仓库存放图片、脚本等内容,方便使用 Markdown 写文章时调用。

发表评论

电子邮件地址不会被公开。 必填项已用*标注