- GitHub Pages 支持使用自定义域,或将站点 URL 的根从默认值(如
username.github.io
)更改为拥有的任何域(如blog.octocat.com
)。
#GitHub Pages中的自定义域简述
- 支持的自定义域
- GitHub Pages 适用于两种类型的域:
- 子域
- www子域:
www.example.com
- 自定义子域:
blog.example.com
- www子域:
- 顶级域(apex 域):
example.com
- 顶点域是不包含子域的自定义域
- 也称为基本域、裸域、裸域、根顶点或区域顶点域。
- 配置了自定义域后,自定义域将替换该帐户所拥有但未配置自定义域的任何项目站点的 username.github.io或organization.github.io部分 URL。(如
www.octocat.com/blog
)
- 子域
- GitHub Pages 适用于两种类型的域:
- 为 GitHub Pages 站点使用子域
- 子域通过 DNS 提供商配置有CNAME指向站点默认域(
username.github.io
)。- www子域
- 最常用的子域类型。例如,www.example.com包括一个www子域。
- www子域是最稳定的自定义域类型,因为www子域不受 GitHub 服务器 IP 地址更改的影响。
- 自定义子域
- 自定义子域是一种不使用标准www变体的子域。
- 自定义子域是一种不使用标准www变体的子域。
- www子域
- 子域通过 DNS 提供商配置有CNAME指向站点默认域(
- 为 GitHub Pages 站点使用顶级域
顶级域通过 DNS 提供商配置有A、ALIAS或记录。
如果使用 apex 域作为自定义域名,建议还设置一个 www 子域。
如果通过 DNS 提供程序配置每种域类型的正确记录,GitHub Pages 将自动在域之间创建重定向。
- 例如,如果将
www.example.com
配置为站点的自定义域,并且为顶点和 www 域设置了 GitHub Pages DNS 记录,则example.com
将重定向到www.example.com
。(反之也一样) 注意,自动重定向仅适用于 www 子域。
- 例如,如果将
- 保护 GitHub Pages 站点的自定义域
- 如果 GitHub Pages 站点已禁用,但设置了自定义域,则存在域接管的风险。
- 验证自定义域可防止其他 GitHub 用户将你的域用于他们的存储库。
- 验证的域会阻止其他 GitHub 用户接管的自定义域并使用它来发布他们自己的 GitHub Pages 站点。
- 建议始终使用www子域,即使还使用顶级域。
- 当使用顶级域创建新站点时,会自动尝试保护www子域以在提供站点内容时使用,但需要更改 DNS 才能使用www子域。如果配置www子域,会自动尝试保护关联的顶级域。
#管理自定义域
可以设置或更新某些 DNS 记录和存储库设置,以将 GitHub Pages 站点的默认域指向自定义域。
配置子域
- 在存储库中为站点配置自定义子域(如
www.octocat.com
) - 使用 DNS 提供商配置 CNAME 记录
- 配置子域(如www)指向站点默认域名(如
username.github.io
)
- 配置子域(如www)指向站点默认域名(如
- 若要为站点强制实施 HTTPS 加密,请选择“强制实施 HTTPS”。(可选)
- 在存储库中为站点配置自定义子域(如
配置顶点域
- 在存储库中为站点配置顶点域(如
octocat.com
) - 使用 DNS 提供商至少配置 一个ALIAS、ANAME或A 记录
- 配置A记录指向站点ip
- 配置AAAA记录指向站点ipv6
- 若要为站点强制实施 HTTPS 加密,请选择“强制实施 HTTPS”。(可选)
- 建议还设置一个 www 子域(GitHub Pages 将自动在域之间创建重定向)
- 建议勿使用通配符 DNS 记录,例如 *.example.com。(通配符 DNS 记录将允许任何人在你的其中一个子域上托管 GitHub Pages 站点)
- 在存储库中为站点配置顶点域(如
配置顶点域和www子域变体
- 使用 DNS 提供商配置 A 记录
- 使用 DNS 提供商配置 CNAME 记录
验证自定义域
- 通过DNS TXT record验证自定义域
- 使用 GitHub 提供 TXT 记录
- 使用 DNS 提供商配置该 TXT 记录
- 通过DNS TXT record验证自定义域
更多操作参考:GitHub Pages 管理自定义域
#自定义域相关问题
- 关于给项目站点添加自定义域
- 使用 DNS 提供商配置一条CNAME记录
- 如: 添加一条CNAME记录
blog.example.com
指向GitHub Pages默认域username.github.io
- 如: 添加一条CNAME记录
- Hexo可以直接手动在source目录添加CNAME文件并填写自定义域(
blog.example.com
)。
- 使用 DNS 提供商配置一条CNAME记录
- 关于GoDaddy
- 由于GoDaddy购买的域名默认是停放的(Parked),并且www子域名是默认指向顶级域。
- 删除关于" A @ Parked" 的 A 记录
- 建议更改www子域指向GitHub Pages 站点的默认域(
username.github.io.
)
- 由于GoDaddy购买的域名默认是停放的(Parked),并且www子域名是默认指向顶级域。
- 关于使用强制 HTTPS
- GitHub 不会颁发 TSL 证书,除非的 CNAME 记录www子域指向站点默认域(
username.github.io.
) - 关于项目站点:在站点默认域成功更改自定义域后,项目站点即可勾选强制HTTPS
- GitHub 不会颁发 TSL 证书,除非的 CNAME 记录www子域指向站点默认域(
- 更多 GitHub Pages 的证书问题