这篇博客将整理在配置博客以及项目 Pages 的自定义域名过程,遇到的问题以及解决方法。Github 的文档对于如何配置自定义域名有详细的介绍,这里不会所有翻译,只重点记录实践的过程,内容涉及为用户网站,公司网站,以及项目网站添加 Apex
域名(qiwihui.com),二级域名(www.qiwihui.com)以及开启 HTTPS。最后,全部指向 www.qiwihui.com
的请求将会被重定向至 https://qiwihui.com
。html
<!--more-->python
支持的自定义域名类型 | 域名例子 |
---|---|
www subdomain | www.example.com |
one apex domain & one www subdomain | example.com & www.example.com |
apex domain | example.com |
custom subdomain | blog.example.com |
GitHub Pages 站类型 | 在 Github 上 Pages 的默认域名和主机地址 | 页面被如何重定向 | 自定义域名举例 |
---|---|---|---|
User Pages 站 | username.github.io |
自动重定向到设置的自定义域名 | user.example.com |
Organization Pages 站 | orgname.github.io |
自动重定向到设置的自定义域名 | org.example.com |
用户拥有的 Project Pages 站 | username.github.io/projectname |
自动重定向到 User Pages 站自定义域名的子目录(user.example.com/projectname ) |
project.example.com |
公司拥有的 Project Pages 站 | orgname.github.io/projectname |
自动重定向到 Organization Pages 站自定义域名的子目录(org.example.com/projectname ) |
project.example.com |
在项目 Settings
中,找到 GitHub Pages
这一区域,选择 Source
为对应的要部署的分支,这里我选择 gh-pages branch
:git
其中,选择 master branch
会视 /README.md
为 web 的 index.html
,选择 master branch /docs folder
会视 /docs/README.md
为 web 的 index.html
。github
在 Custom domain
中添加本身的域名并保存:web
或者,在项目分支中添加 CNAME
文件,CNAME
文件的内容为bash
qiwihui.com
这里推荐第二种,尤为对于有设置 CI 的项目,由于 CI 上将第一种设置覆盖。
这一步是比较重要却又容易忽视的一步:dom
qiwihui.com
,那么 www.qiwihui.com
会被重定向到 qiwihui.com
;www.qiwihui.com
,那么 qiwihui.com
会被重定向到 www.qiwihui.com
;这里我选择重定向到 www.qiwihui.com
,因此设置为 qiwihui.com
网站
为了能设置Apex
域名,须要在 DNS 中配置 A 记录指向 github 的 IP:ui
185.199.108.153 185.199.109.153 185.199.110.153 185.199.111.153
同时,设置 CNAME
记录将 www.qiwihui.com
指向 qiwihui.github.io
,即 <你的 github 用户名>.github.io
。对于公司来讲,这个地址是 <公司名称>.github.io
。spa
如下是设置好以后的 DNS 记录状况:
$ dig +noall +answer qiwihui.com qiwihui.com. 60 IN A 185.199.111.153 qiwihui.com. 60 IN A 185.199.110.153 qiwihui.com. 60 IN A 185.199.108.153 qiwihui.com. 60 IN A 185.199.109.153
$ dig www.qiwihui.com +nostats +nocomments +nocmd ; <<>> DiG 9.10.6 <<>> www.qiwihui.com +nostats +nocomments +nocmd ;; global options: +cmd ;www.qiwihui.com. IN A www.qiwihui.com. 28 IN CNAME qiwihui.github.io. qiwihui.github.io. 28 IN A 185.199.110.153 qiwihui.github.io. 28 IN A 185.199.108.153 qiwihui.github.io. 28 IN A 185.199.111.153 qiwihui.github.io. 28 IN A 185.199.109.153
勾选 Enforce HTTPS
Github 会自动保持 HTTPS 证书的有效。
当给项目设置 Pages 时,通常都已经有一个我的或者公司的 Pages 了,若是没有,就能够按以上的过程添加。若是已经设置了,则只须要很简单的两步便可:
如下以我的项目 [qiwihui/fullstackpython.com](https://github.com/qiwihui/fullstackpython.com)
,设置地址为 fullstackpython.qiwihui.com
CNAME
文件指向 fullstackpython.qiwihui.com
:fullstackpython.qiwihui.com
指向 qiwihui.github.io
,即 <你的 github 用户名>.github.io
。对于公司来讲,这个地址是 <公司名称>.github.io
。一段时间后便可。