拥有仓库管理员权限的人可为 GitHub Pages 站点配置自定义域。
关于自定义域配置
使用 DNS 提供程序配置自定义域之前,请确保将自定义域添加到您的 GitHub Pages 站点。 使用 DNS 提供程序配置自定义域而不将其添加到 GitHub,可能导致其他人能够在您的某个子域上托管站点。
dig
命令可用于验证 DNS 记录的配置是否正确,它未包含在 Windows 中。 必须安装 BIND 才能验证 DNS 记录是否配置正确。
注意:传播 DNS 更改可能需要长达 24 小时的时间。
配置子域
要设置 www
或自定义子域(例如 www.example.com
或 blog.example.com
),必须在存储库设置中添加你的域。 然后,通过 DNS 提供商配置 CNAME 记录。
-
在 GitHub 上,导航到站点的仓库。
-
在存储库名称下,单击 “设置”。 如果看不到“设置”选项卡,请选择“”下拉菜单,然后单击“设置”********。
-
在边栏的“代码和自动化”部分中,单击“ Pages”。
-
在“自定义域”下,键入自定义域,然后单击“保存”。 如果从分支发布站点,将会创建一个提交,将
CNAME
文件添加到源分支的根目录。 如果使用自定义 GitHub Actions 工作流发布站点,则不会创建CNAME
文件。 有关发布源的详细信息,请参阅“配置 GitHub Pages 站点的发布源”。注意:如果自定义域是国际化域名,则必须输入 Punycode 编码版本。
有关 Punycodes 的详细信息,请参阅国际化域名。
-
导航到 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 站点”。
配置 apex 域
要设置顶点域(例如 example.com
),必须在存储库设置中配置自定义域,并使用 DNS 提供程序配置至少一个 ALIAS
、ANAME
或 A
记录。
如果使用 apex 域作为自定义域名,建议还设置一个 www
子域。 如果通过 DNS 提供程序配置每种域类型的正确记录,GitHub Pages 将自动在域之间创建重定向。 例如,如果将 www.example.com
配置为站点的自定义域,并且为顶点和 www
域设置了 GitHub Pages DNS 记录,则 example.com
将重定向到 www.example.com
。 请注意,自动重定向仅适用于 www
子域。 自动重定向不适用于任何其他子域,如 blog
。 有关详细信息,请参阅“配置子域”。
-
在 GitHub 上,导航到站点的仓库。
-
在存储库名称下,单击 “设置”。 如果看不到“设置”选项卡,请选择“”下拉菜单,然后单击“设置”********。
-
在边栏的“代码和自动化”部分中,单击“ Pages”。
-
在“自定义域”下,键入自定义域,然后单击“保存”。 如果从分支发布站点,将会创建一个提交,将
CNAME
文件添加到源分支的根目录。 如果使用自定义 GitHub Actions 工作流发布站点,则不会创建CNAME
文件。 有关发布源的详细信息,请参阅“配置 GitHub Pages 站点的发布源”。 -
导航到 DNS 提供程序并创建一条
ALIAS
、ANAME
或A
记录。 还可以为 IPv6 支持创建AAAA
记录。 如果要实现 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
子域变体
使用顶点域时,建议配置 GitHub Pages 站点,以便在顶点域和该域的 www
子域变体中托管内容。
要与顶点域一起设置 www
子域,必须先使用 DNS 提供程序创建 ALIAS
、ANAME
或 A
记录来配置顶点域。 有关详细信息,请参阅配置顶点域。
配置 apex 域后,您必须通过 DNS 提供商配置 CNAME 记录。
-
导航到 DNS 提供程序并创建
CNAME
记录,使其将www.example.com
指向站点<user>.github.io
或<organization>.github.io
的默认域。 不要包括仓库名称。 有关如何创建正确记录的更多信息,请参阅 DNS 提供程序的文档。 有关站点的默认域的详细信息,请参阅“关于 GitHub Pages”。 -
要确认 DNS 记录配置正确,请使用
dig
命令,将www
替换为子域变体。$ 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 上,导航到站点的仓库。
-
在存储库名称下,单击 “设置”。 如果看不到“设置”选项卡,请选择“”下拉菜单,然后单击“设置”********。
-
在边栏的“代码和自动化”部分中,单击“ Pages”。
-
在“自定义域”下,单击“删除”。
保护自定义域
如果 GitHub Pages 站点已禁用,但设置了自定义域,则存在域接管的风险。 在您的网站被禁用时拥有通过 DNS 提供商配置的自定义域,可能会导致其他人在您的一个子域上托管网站。
验证自定义域可防止其他 GitHub 用户将你的域用于他们的存储库。 如果你的域未经过验证,并且 GitHub Pages 站点已禁用,则应立即通过 DNS 提供商更新或删除 DNS 记录。 有关详细信息,请参阅“验证 GitHub Pages 的自定义域”。