啟用 GitHub Pages 功能,同時自訂域名。

關於 GitHub Pages

GitHub PagesGitHub 的另一個功能。可以把它直接想像成一個網頁免費空間,不過只能放靜態網頁,什麼 ASP、PHP、JSP……等動態網頁不支援。

聽起來,爛爛的,不過如果拿來當圖床,我是覺得還蠻不錯的 XDD,另一方面是還可以自訂域名。

因為可以自訂域名,域名有效期還在,就算換了空間也比較不用擔心檔案或圖片網址會就此改變,然後圖片就變成叉燒包或是檔案不存在。

方法有兩種:

  1. 官方建議 repository 命名法
  2. 非官方建議 repository 命名法

兩種 repository 命名法都可以達到基本目的,操作步驟和相關設定是大同小異,但官方建議 repository 命名法,則比較有可玩性。

啟用 GitHub Pages 功能

  1. 建立一個你喜歡的 repository 名稱
    • 非官方建議 repository 命名法:repository 名稱,可以任意使用自己喜歡的名稱,沒有什麼限制
    • 官方建議 repository 命名法:repository 名稱,一定要命名為「<username>.github.io」,<username> 指的就是你的帳號
      例如:我的帳號是 wawatest,那麼 repository 名稱就要命名為「wawatest.github.io
  2. commit 一個檔案到你的 repository,這個檔案名稱建議是 index.html
  3. 在 repository 的 settings 裡開啟 GitHub Pages 功能,預設的 Source 是「None」,把它改成「Master Branch」,然後再儲存
  4. 這時會看到一個訊息,意思是我們的檔案會在這個網址裡出現,直接點這個網址,就會看到我們的網頁了

到此為止的操作,就已經成功開啟了 GitHub Pages 功能,日後只要 commit 我們的靜態網頁、圖片、JS、CSS……等靜態檔案到這個 repository 就可以看到成果了。而其網址格式則會長得像這樣:

http(s)://<username>.github.io/<your repostory name>/<folder name>/<file name>

啟用自訂域名功能

  1. 在「Custome domain」輸入你想要的網址,然後儲存
  2. 啟用自訂域名功能之後,再回到你的 repository 裡,會看到多出了一個「CNAME」的檔案,裡頭會記載著你的自訂域名,請不要將它刪掉
  3. 到你的 DNS 裡設定相關的資料:
    • DNS Type: CNAME
    • TTL: 可以先設到最短時間,之後可以再調長一點
    • Value: <username>.github.io
  4. 連上你的網址,應該會看到和「啟用 GitHub Pages 功能」最後一個步驟相同的結果

啟用自訂域名功能之後,網址格式則會從原本的:

http(s)://<username>.github.io/<your repostory name>/<folder name>/<file name>

變成

http(s)://your.domane.name/<folder name>/<file name>

官方與非官方建議 repository 命名法的差異

不論你採用哪種 repository 命名法,每一個 repository 都可以啟用 GitHub Pages 以及自訂域名功能

但現實上,我們不一定只會有一個 repository,如果我有三個 repository,它們的名稱分別如下:

  1. wawatest.github.io(這是官方建議的 repository 命名法)
  2. wawatest
  3. wawajohntest

第 1 個 repository 我已經啟用了 GitHub Pages 功能,同時也啟用了自訂域名功能

所以第 1 個 repository 的域名或網址,會長得像這樣

http(s)://your.domain.name/

因為第 1 個 repository 名稱是採用官方的建議,所以第 2 和第 3 個 repository,我

「可以只啟用 GitHub Pages 功能,自訂域名功能則不用開啟」

同時第 2 和第 3 個 repository,在啟用 GitHub Page 功能後,其網址會直接長得像這樣

  • http(s)://your.domain.name/wawatest/
  • http(s)://your.domain.name/wawajohntest/

換言之,可以把其他的 repository 想像成資料夾,只是不存在於第 1 個 repository,如果用 Web Server 的概念來想,其他 repository 就像是虛擬目錄。

除此之外,在第 2 和第 3 個 repository 裡,都不會看到「CNAME」這個檔案,因為我們沒幫它們設定自訂域名,事實上也不需要。當然,若想幫它們設定自訂域名,也是可以的。

主要原因則是因為我第一個 repository 是採用官方建議的命名法,所以才可以達到虛擬目錄的功能。

但如果第一個 repository 不是採用官方建議的命名法,那麼每個 repository

「一定都要啟用自訂域名功能,同時域名不可以重複」

所以它們最後的域名或網址會長得像這樣:

  1. http(s)://your1.domain.name/
  2. http(s)://your2.domain.name/
  3. http(s)://your3.domain.name/

這意謂著:

  1. 每個 repository 都必須要啟用自訂域名功能
  2. 你必須要在你的 DNS 上設定 3 筆記錄

總結

整體而言,我個人較推薦採用官方建議的 repository 命名法,雖然這個 repository 名稱又臭又長。

自訂 404 錯誤頁面

GitHub Pages 也允許我們自訂 404 的錯誤頁面,自訂方式非常地簡單,只要 commit 一個命為「404.html」的網頁到各 repository,當我們的 GitHub Pages 找不到相關請求的資源時,就會自動呼叫我們 commit 的 404.html 這個網頁。

參考資料:

  1. GitHub Pages
  2. Creating a custom 404 page for your GitHub Pages site

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Google reCAPTCHA 保護機制,這項服務遵循 Google 隱私權政策服務條款