拥有仓库管理员权限的用户可以为 GitHub Pages 站点配置自定义域名。
关于自定义域名配置
提示
我们建议您在将自定义域名添加到您的仓库之前验证它,以提高安全性并避免被劫持。有关更多信息,请参阅“验证 GitHub Pages 的自定义域名”。
请确保在使用 DNS 提供商配置自定义域名之前,先将自定义域名添加到您的 GitHub Pages 站点。在不将自定义域名添加到 GitHub 的情况下使用 DNS 提供商配置自定义域名可能会导致其他人能够在一个或多个子域名上托管站点。
Windows 中不包含可用于验证 DNS 记录正确配置的dig命令。要验证您的 DNS 记录是否已正确配置,您可以使用Resolve-DnsNamePowerShell 命令或安装BIND。
注意
DNS 更改最多可能需要 24 小时才能传播。
配置顶层域名
要设置顶层域名(例如example.com),您必须在您的仓库设置中配置自定义域名,以及至少一个ALIAS、ANAME或A记录与您的 DNS 提供商。
-
在 GitHub 上,导航到您站点的仓库。
-
在您的仓库名称下,单击 **设置**。如果您看不到“设置”选项卡,请选择****下拉菜单,然后单击**设置**。

-
在侧边栏的“代码和自动化”部分,单击** Pages**。
-
在“自定义域名”下,输入您的自定义域名,然后单击**保存**。如果您是从分支发布您的站点,这将创建一个提交,该提交会将
CNAME文件直接添加到源分支的根目录。如果您使用自定义 GitHub Actions 工作流发布站点,则不会创建CNAME文件,因此您需要手动创建一个(其中只包含一行包含自定义域名的文本)。有关您的发布源的更多信息,请参阅“配置 GitHub Pages 站点的发布源”。 -
导航到您的 DNS 提供商并创建
ALIAS、ANAME或A记录。您还可以创建AAAA记录以支持 IPv6。如果您正在实施 IPv6 支持,我们强烈建议您除了AAAA记录外还使用A记录,因为全球 IPv6 的采用速度较慢。有关如何创建正确记录的更多信息,请参阅您的 DNS 提供商的文档。-
要创建
ALIAS或ANAME记录,请将您的顶层域名指向您站点的默认域名。有关您站点默认域名的更多信息,请参阅“关于 GitHub Pages”。 -
要创建
A记录,请将您的顶层域名指向 GitHub Pages 的 IP 地址。185.199.108.153 185.199.109.153 185.199.110.153 185.199.111.153 -
要创建
AAAA记录,请将您的顶层域名指向 GitHub Pages 的 IP 地址。2606:50c0:8000::153 2606:50c0:8001::153 2606:50c0:8002::153 2606:50c0:8003::153
警告
我们强烈建议您不要使用通配符 DNS 记录,例如
*.example.com。即使您验证了域名,这些记录也会使您立即面临域名被接管的风险。例如,如果您验证了example.com,这可以防止其他人使用a.example.com,但他们仍然可以接管b.a.example.com(该域名受通配符 DNS 记录涵盖)。有关更多信息,请参阅“验证 GitHub Pages 的自定义域名”。 -
-
打开终端终端Git Bash。
-
要确认您的 DNS 记录已正确配置,请使用
dig命令,将EXAMPLE.COM替换为您的顶层域名。确认结果与上面 GitHub Pages 的 IP 地址匹配。-
对于
A记录$ dig EXAMPLE.COM +noall +answer -t A > EXAMPLE.COM 3600 IN A 185.199.108.153 > EXAMPLE.COM 3600 IN A 185.199.109.153 > EXAMPLE.COM 3600 IN A 185.199.110.153 > EXAMPLE.COM 3600 IN A 185.199.111.153 -
对于
AAAA记录$ dig EXAMPLE.COM +noall +answer -t AAAA > EXAMPLE.COM 3600 IN AAAA 2606:50c0:8000::153 > EXAMPLE.COM 3600 IN AAAA 2606:50c0:8001::153 > EXAMPLE.COM 3600 IN AAAA 2606:50c0:8002::153 > EXAMPLE.COM 3600 IN AAAA 2606:50c0:8003::153请记住还要检查您的
A记录。
-
-
如果您使用静态站点生成器在本地构建站点并将生成的文档推送到 GitHub,请将添加 CNAME 文件的提交拉取到本地仓库。有关更多信息,请参阅“排查自定义域名和 GitHub Pages 问题”。
-
或者,要为您的站点强制执行 HTTPS 加密,请选择**强制使用 HTTPS**。此选项最多可能需要 24 小时才能可用。有关更多信息,请参阅“使用 HTTPS 保护 GitHub Pages 站点”。
配置顶级域名和www子域名变体
注意
建议为使用 HTTPS 保护的网站同时设置www子域名和顶级域名。
如果您使用顶级域名作为自定义域名,我们建议您也设置一个www子域名。如果您通过您的 DNS 提供商为每种域名类型配置正确的记录,GitHub Pages 将自动在这些域名之间创建重定向。例如,如果您将www.example.com配置为网站的自定义域名,并且您已为顶级域名和www域名设置了 GitHub Pages DNS 记录,则example.com将重定向到www.example.com。请注意,自动重定向仅适用于www子域名。自动重定向不适用于任何其他子域名,例如blog。有关更多信息,请参阅“配置子域名”。
导航到您的 DNS 提供商并为指向 GitHub Pages 默认域名的www子域名创建一个CNAME记录。例如,如果您的网站位于<user>.github.io,您应该创建一个将www.example.com指向<user>.github.io的CNAME记录。同样,对于位于<organization>.github.io的组织网站,您应该创建一个将www.example.com指向<organization>.github.io的CNAME记录。确保CNAME记录直接指向<user>.github.io或<organization>.github.io,不包含仓库名称。
有关如何创建正确记录的更多信息,请参阅您的 DNS 提供商的文档。有关您网站的默认域名的更多信息,请参阅“关于 GitHub Pages”。
配置子域名
要设置www或自定义子域名(例如www.example.com或blog.example.com),您必须在仓库设置中添加您的域名。之后,使用您的 DNS 提供商配置 CNAME 记录。
-
在 GitHub 上,导航到您站点的仓库。
-
在您的仓库名称下,单击 **设置**。如果您看不到“设置”选项卡,请选择****下拉菜单,然后单击**设置**。

-
在侧边栏的“代码和自动化”部分,单击** Pages**。
-
在“自定义域名”下,输入您的自定义域名,然后单击**保存**。如果您是从分支发布您的站点,这将创建一个提交,该提交会将
CNAME文件直接添加到源分支的根目录。如果您使用自定义 GitHub Actions 工作流发布站点,则不会创建CNAME文件,因此您需要手动创建一个(其中只包含一行包含自定义域名的文本)。有关您的发布源的更多信息,请参阅“配置 GitHub Pages 站点的发布源”。 -
导航到您的 DNS 提供商并创建一个
CNAME记录,该记录将您的子域名指向您网站的默认域名。例如,如果您想为您的用户网站使用子域名www.example.com,请创建一个将www.example.com指向<user>.github.io的CNAME记录。如果您想为您的组织网站使用子域名another.example.com,请创建一个将another.example.com指向<organization>.github.io的CNAME记录。CNAME记录应始终指向<user>.github.io或<organization>.github.io,不包括仓库名称。有关如何创建正确记录的更多信息,请参阅您的 DNS 提供商的文档。有关您网站的默认域名的更多信息,请参阅“关于 GitHub Pages”。警告
我们强烈建议您不要使用通配符 DNS 记录,例如
*.example.com。即使您验证了域名,这些记录也会使您立即面临域名被接管的风险。例如,如果您验证了example.com,这可以防止其他人使用a.example.com,但他们仍然可以接管b.a.example.com(该域名受通配符 DNS 记录涵盖)。有关更多信息,请参阅“验证 GitHub Pages 的自定义域名”。 -
打开终端终端Git Bash。
-
要确认您的 DNS 记录已正确配置,请使用
dig命令,将WWW.EXAMPLE.COM替换为您的子域名。$ dig WWW.EXAMPLE.COM +nostats +nocomments +nocmd > ;WWW.EXAMPLE.COM. IN A > WWW.EXAMPLE.COM. 3592 IN CNAME YOUR-USERNAME.github.io. > YOUR-USERNAME.github.io. 43192 IN CNAME GITHUB-PAGES-SERVER . > GITHUB-PAGES-SERVER . 22 IN A 192.0.2.1 -
如果您使用静态站点生成器在本地构建站点并将生成的文档推送到 GitHub,请将添加 CNAME 文件的提交拉取到本地仓库。有关更多信息,请参阅“排查自定义域名和 GitHub Pages 问题”。
-
或者,要为您的站点强制执行 HTTPS 加密,请选择**强制使用 HTTPS**。此选项最多可能需要 24 小时才能可用。有关更多信息,请参阅“使用 HTTPS 保护 GitHub Pages 站点”。
注意
如果您将自定义子域名指向您的顶级域名,您将遇到强制 HTTPS 到您网站的问题,并且您可能会遇到子域名根本无法访问您的 GitHub Pages 网站的问题。
自定义域名的 DNS 记录
如果您熟悉为 GitHub Pages 网站配置域名的过程,您可以使用下表查找特定方案的 DNS 值以及您的 DNS 提供商支持的 DNS 记录类型。有关更多信息,包括如何在 GitHub 上配置您的 GitHub Pages 网站以及如何使用dig命令验证配置,请参考以上部分。
要配置顶级域名,您只需要从下表中选择一种 DNS 记录类型。要配置顶级域名和www子域名(例如,example.com和www.example.com),请先配置顶级域名,然后再配置子域名。有关更多信息,请参阅“配置顶级域名和www子域名变体”。
警告
我们强烈建议您不要使用通配符 DNS 记录,例如*.example.com。即使您验证了域名,这些记录也会使您立即面临域名被接管的风险。例如,如果您验证了example.com,这可以防止其他人使用a.example.com,但他们仍然可以接管b.a.example.com(该域名受通配符 DNS 记录涵盖)。有关更多信息,请参阅“验证 GitHub Pages 的自定义域名”。
| 场景 | DNS 记录类型 | DNS 记录名称 | DNS 记录值 |
|---|---|---|---|
| 顶级域名 ( example.com) | A | @ | 185.199.108.153185.199.109.153185.199.110.153185.199.111.153 |
| 顶级域名 ( example.com) | AAAA | @ | 2606:50c0:8000::1532606:50c0:8001::1532606:50c0:8002::1532606:50c0:8003::153 |
| 顶级域名 ( example.com) | ALIAS 或 ANAME | @ | USERNAME.github.io 或ORGANIZATION.github.io |
| 子域名 ( www.example.com,blog.example.com) | CNAME | SUBDOMAIN.example.com. | USERNAME.github.io 或ORGANIZATION.github.io |
移除自定义域名
如果您收到关于自定义域名已被占用的错误,您可能需要从另一个仓库中移除该自定义域名。
-
在 GitHub 上,导航到您站点的仓库。
-
在您的仓库名称下,单击 **设置**。如果您看不到“设置”选项卡,请选择****下拉菜单,然后单击**设置**。

-
在侧边栏的“代码和自动化”部分,单击** Pages**。
-
在“自定义域名”下,单击移除。

保护您的自定义域名
如果您的 GitHub Pages 网站已禁用但已设置自定义域名,则它有被接管的风险。在您的网站被禁用时,在您的 DNS 提供商处配置自定义域名可能会导致其他人托管您子域名上的网站。
验证您的自定义域名可防止其他 GitHub 用户使用您的域名及其仓库。如果您的域名未经验证,并且您的 GitHub Pages 网站已禁用,您应立即更新或移除您 DNS 提供商中的 DNS 记录。有关更多信息,请参阅“验证您的 GitHub Pages 自定义域名”。