GitHub Pages架設網站的流程其實不長:準備一個儲存庫、放進網頁檔案、開啟發布設定,很快就能看到一個可以公開瀏覽的網站。真正花時間的,往往是後面的細節:要從哪個分支發布、主題怎麼套、自己的網域怎麼接上、HTTPS為什麼一直無法啟用,以及改了檔案卻看不到變化時該從哪裡查起。這篇依照實際動手的順序整理成教學,每一步都說明要做什麼、為什麼這樣做,最後把新手最常遇到的錯誤與排查方向列出來。GitHub的介面會隨時間調整,文中以功能描述為主,實際的選項名稱請以你看到的畫面為準。
動手前的準備:帳號、網站類型與首頁檔案
首先需要一個GitHub帳號,並決定網站要以哪一種形式存在。GitHub Pages大致分成兩類:一類是以帳號或組織為單位的主網站,儲存庫必須依照官方規定的格式命名,網址會直接使用你的帳號名稱;另一類是專案網站,任何一個儲存庫都能開啟,網址是在主網站底下再加上儲存庫名稱的路徑。個人或團隊的主要網站通常選第一類,某個產品或活動的說明頁則適合第二類。
另外要確認儲存庫是公開還是私有。公開儲存庫可以直接使用Pages,但裡面的所有檔案與修改紀錄都是公開的;私有儲存庫能否使用Pages,與你的帳號方案有關,請以官方最新說明為準。網站檔案方面,最少只需要一個名為index.html的首頁檔,如果還沒準備好設計,可以先放一個簡單的頁面,確認發布流程通了再逐步替換。
建立儲存庫、啟用Pages並選擇發布來源
建立儲存庫後,把網站檔案放進去。檔案不多時,可以直接在網頁上用上傳功能;如果打算長期維護,建議在自己的電腦安裝Git,把儲存庫複製到本機,修改後再推送上去,這樣每次變更都會留下清楚的紀錄。接著進入儲存庫的設定頁面,找到Pages相關的區塊,選擇發布來源。
發布來源常見有兩種。第一種是指定某個分支,並選擇從該分支的根目錄或名為docs的資料夾發布,適合檔案已經是完整網頁、不需要建置的情況;把網站放在docs資料夾,可以和專案的其他檔案分開管理。第二種是透過GitHub Actions的自動化流程發布,適合使用靜態網站產生器、需要先建置才能產生網頁的專案。設定完成後等候系統處理,設定頁面會顯示網站目前的網址與發布狀態。
套用主題或使用Jekyll產生網站
如果不想從零寫版面,可以利用GitHub Pages對Jekyll的內建支援。Jekyll是一套開源的靜態網站產生器,你只要用Markdown撰寫內容,在設定檔裡指定主題,發布時系統就會自動把內容套進版型、產生完整的網頁。GitHub Pages支援一些預設主題,也可以使用其他公開的Jekyll主題,但後者的設定方式與相容性需要依照主題本身的說明處理。
使用Jekyll要注意兩件事。第一,Jekyll預設不會發布以底線開頭的資料夾與檔案,如果你放的是其他工具產生的完整網頁,而其中剛好有這類資料夾,可以在根目錄放一個名為「.nojekyll」的空白檔案,讓系統跳過Jekyll處理,直接發布原始檔案。第二,建置失敗時網站不會更新,這時要到儲存庫查看自動化流程的執行紀錄,錯誤訊息通常會指出是哪個檔案出了問題,常見原因是設定檔縮排錯誤,或文章開頭的設定區塊格式不完整。
綁定自己的網域:CNAME與A紀錄各自的用途
GitHub提供的預設網址可以直接使用,但公司或個人品牌通常會希望用自己的網域。設定分成兩邊:一邊是在儲存庫的Pages設定中填入自訂網域;另一邊是到網域註冊商或DNS管理後台新增紀錄,讓網域指向GitHub Pages。從分支發布時,系統通常會在儲存庫裡建立一個名為CNAME的檔案記錄這個網域;透過自動化流程發布時,則以設定頁面上的網域設定為準。
DNS紀錄的選擇取決於你要用哪一種網址。如果是以www開頭的子網域,通常新增一筆CNAME紀錄,指向你在GitHub的預設網域即可,CNAME紀錄的作用是讓這個名稱跟著另一個名稱走。如果要讓不含www的根網域也能開啟,則需要新增A紀錄,指向GitHub官方文件公布的IP位址,A紀錄的作用是直接指定到某個IP;部分DNS服務商也提供可用在根網域上的別名類紀錄。實際的IP位址請以官方文件為準,不要照抄來路不明的教學。建議根網域與www兩種都設定好,並在GitHub上完成網域驗證,降低網域被他人冒用到其他Pages網站的風險。
啟用HTTPS與日常更新內容的流程
GitHub Pages支援HTTPS,使用預設網域時會自動加密。綁定自訂網域後,系統需要先確認DNS設定正確,才能替你的網域取得憑證,這段期間強制使用HTTPS的選項可能暫時無法勾選,屬於正常現象,通常等DNS生效、憑證核發之後就能啟用。啟用後,訪客用http開啟會被自動導向https。如果頁面裡有寫死的http圖片或檔案路徑,瀏覽器仍可能提示連線不完全安全,記得把這些路徑一併改成https或相對路徑。
用GitHub Pages架設網站之後,日常更新的流程很單純:在本機修改檔案、用瀏覽器預覽確認,提交修改並推送到發布用的分支,系統就會自動重新發布。如果有多人參與,建議在其他分支上修改,透過合併請求讓另一個人檢查後再合併,避免錯誤直接出現在正式網站上。每次發布都需要一段處理時間,可以從儲存庫的執行紀錄確認是否已經完成。
常見錯誤排查:404、網域沒生效、樣式沒載入
第一種是開啟網站出現404。先確認發布來源的分支與資料夾設定正確,再確認該位置確實有index.html,而且檔名大小寫完全一致;GitHub Pages會區分大小寫,Index.html與index.html會被視為不同的檔案。如果是剛啟用或剛推送,也可能只是還在發布中,稍等一下再重新整理。
第二種是自訂網域沒有生效。常見原因包括DNS紀錄還在傳播、紀錄指向的位置打錯、同一個名稱存在互相衝突的紀錄,或是使用產生器建置時,建置結果把CNAME檔案覆蓋掉,導致網域設定被清除。可以先用DNS查詢工具確認紀錄是否已經指向正確位置,再回到Pages設定頁面看有沒有錯誤提示。
第三種是頁面有文字,但樣式和圖片全部沒載入,這在專案網站特別常見。原因通常是檔案路徑用了以斜線開頭的絕對路徑,在本機預覽時指向網站根目錄沒問題,但專案網站實際位於儲存庫名稱的子路徑之下,於是找不到檔案。把路徑改成相對路徑,或在產生器的設定裡正確指定網站的基礎路徑,就能解決。如果確定改了內容卻看不到變化,先確認發布已經完成,再清除瀏覽器快取或用無痕視窗開啟。
常見問題
GitHub Pages架設網站需要付費嗎?使用公開儲存庫發布網站時不需要另外付費;若要從私有儲存庫發布,則與帳號方案有關。自訂網域需要自行向網域註冊商申請,這部分與GitHub無關。
GitHub Pages可以放表單或留言功能嗎?GitHub Pages只提供靜態檔案,沒有伺服器端程式可以接收資料,因此表單與留言需要嵌入第三方服務。若網站需要會員或購物功能,建議改用其他主機方案。
改了DNS之後要等多久才會生效?生效時間取決於紀錄的存活時間設定與各地DNS伺服器的更新狀況,有時很快,有時需要較長時間。等待期間不要反覆修改紀錄,否則會讓排查更困難。
原本的網站可以搬到GitHub Pages嗎?如果原本就是靜態網站,把檔案放進儲存庫即可;動態網站則要先轉成靜態檔案,會員、表單等功能也要另外處理。要特別留意的是,GitHub Pages無法像一般主機那樣設定伺服器端的轉址規則,搬遷時最好維持原本的網址結構,避免舊網址失效。
網站架好之後,下一步是確認它能被搜尋引擎順利讀取、每一頁的標題與結構是否合理。創昇SEO提供免費網站健檢,不論網站放在GitHub Pages或其他主機,都能幫你檢查技術設定與網址結構;若希望有人當面說明檢查結果與後續調整方向,我們也提供全台免費到府解說。
