這篇博客將整理在配置博客以及項目 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
。
一段時間後便可。