內容目錄
關於 GitHub Pages
GitHub Pages 是 GitHub 的另一個功能。可以把它直接想像成一個網頁免費空間,不過只能放靜態網頁,什麼 ASP、PHP、JSP……等動態網頁不支援。
聽起來,爛爛的,不過如果拿來當圖床,我是覺得還蠻不錯的 XDD,另一方面是還可以自訂域名。
因為可以自訂域名,域名有效期還在,就算換了空間也比較不用擔心檔案或圖片網址會就此改變,然後圖片就變成叉燒包或是檔案不存在。
方法有兩種:
- 官方建議 repository 命名法
- 非官方建議 repository 命名法
兩種 repository 命名法都可以達到基本目的,操作步驟和相關設定是大同小異,但官方建議 repository 命名法,則比較有可玩性。
啟用 GitHub Pages 功能
- 建立一個你喜歡的 repository 名稱
- 非官方建議 repository 命名法:repository 名稱,可以任意使用自己喜歡的名稱,沒有什麼限制
- 官方建議 repository 命名法:repository 名稱,一定要命名為「<username>.github.io」,<username> 指的就是你的帳號
例如:我的帳號是 wawatest,那麼 repository 名稱就要命名為「wawatest.github.io」
- commit 一個檔案到你的 repository,這個檔案名稱建議是 index.html
- 在 repository 的 settings 裡開啟 GitHub Pages 功能,預設的 Source 是「None」,把它改成「Master Branch」,然後再儲存
- 這時會看到一個訊息,意思是我們的檔案會在這個網址裡出現,直接點這個網址,就會看到我們的網頁了
到此為止的操作,就已經成功開啟了 GitHub Pages 功能,日後只要 commit 我們的靜態網頁、圖片、JS、CSS……等靜態檔案到這個 repository 就可以看到成果了。而其網址格式則會長得像這樣:
http(s)://<username>.github.io/<your repostory name>/<folder name>/<file name>
啟用自訂域名功能
- 在「Custome domain」輸入你想要的網址,然後儲存
- 啟用自訂域名功能之後,再回到你的 repository 裡,會看到多出了一個「CNAME」的檔案,裡頭會記載著你的自訂域名,請不要將它刪掉
- 到你的 DNS 裡設定相關的資料:
- DNS Type: CNAME
- TTL: 可以先設到最短時間,之後可以再調長一點
- Value: <username>.github.io
- 連上你的網址,應該會看到和「啟用 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,它們的名稱分別如下:
- wawatest.github.io(這是官方建議的 repository 命名法)
- wawatest
- 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
「一定都要啟用自訂域名功能,同時域名不可以重複」
所以它們最後的域名或網址會長得像這樣:
- http(s)://your1.domain.name/
- http(s)://your2.domain.name/
- http(s)://your3.domain.name/
這意謂著:
- 每個 repository 都必須要啟用自訂域名功能
- 你必須要在你的 DNS 上設定 3 筆記錄
總結
整體而言,我個人較推薦採用官方建議的 repository 命名法,雖然這個 repository 名稱又臭又長。
自訂 404 錯誤頁面
GitHub Pages 也允許我們自訂 404 的錯誤頁面,自訂方式非常地簡單,只要 commit 一個命為「404.html」的網頁到各 repository,當我們的 GitHub Pages 找不到相關請求的資源時,就會自動呼叫我們 commit 的 404.html 這個網頁。