GitLab Pages 自訂網域部署紀錄
本文記錄我用 Zola + GitLab Pages + Squarespace 架設個人部落格,成功讓自訂網域 bykat.me
上線,並解決 www.bykat.me
憑證錯誤與跳轉問題的完整過程。若你也被 DNS、HTTPS 憑證、www 跳轉搞到頭暈,這篇會幫你釐清整個脈絡。
🚀 起點:我想要一個自己的網域
我用 Zola 架設靜態部落格,部署在 GitLab Pages,並在 Squarespace 購買並管理網域 bykat.me
。
我的需求很簡單:
- 使用
https://bykat.me
作為主要網址 - 如果使用者輸入
https://www.bykat.me
,要自動跳轉到主網域 - 全站支援 HTTPS,不要有紅色警告鎖頭
看似簡單,實際部署卻讓我幾度懷疑人生。
⚙️ 初始設定(我以為這樣就好了)
DNS 設定 @ Squarespace:
Host | Type | Value |
---|---|---|
@ | A | 35.185.44.232 (GitLab Pages IP) |
www | CNAME | bykat.me (希望做跳轉) |
GitLab Pages 設定:
base_url = "https://bykat.me"
.gitlab-ci.yml
裡有:
./zola build --base-url "$CI_PAGES_URL"
- Pages Domain 新增
bykat.me
並設為 primary domain ✅
我以為:這樣 www.bykat.me
就會跳轉,而且一切會安全乾淨。
錯。完全錯。
❌ 問題爆發:HTTPS 憑證錯誤
當我用 Safari / Chrome 開啟 https://www.bykat.me
,出現這個錯誤訊息:
NET::ERR_CERT_COMMON_NAME_INVALID
代表瀏覽器發現憑證名稱與網址不符 —— 憑證只簽給了 bykat.me
,沒有包含 www.bykat.me
。
🧠 關鍵認知:GitLab 不會幫你自動簽 www
GitLab Pages 只會幫你簽發 Pages 設定裡註冊過的 domain。
所以:
- 雖然我 DNS
www.bykat.me
→CNAME → bykat.me
- 但 GitLab 不知道我有
www
這個需求 - 它就不會簽憑證、也不會處理跳轉
✅ 解法:加上 www.bykat.me
到 GitLab Pages Domain
GitLab Pages → Settings → Pages Domains
- 新增
www.bykat.me
- 加入 GitLab 提供的 TXT 記錄(如下)到 Squarespace DNS:
HOST: _gitlab-pages-verification-code.www
TYPE: TXT
VALUE: gitlab-pages-verification-code=xxxxxx...
- 等驗證通過
- 開啟「自動簽憑證」與「Force HTTPS」
🔁 如果還是看不到更新?快取搞鬼!
你可以嘗試以下幾種方式:
✅ 使用 macOS 清除 DNS 快取:
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
這會清除 macOS 本機的 DNS cache。
🧪 最終成果
- ✅
https://bykat.me
:正常開啟 - ✅
https://www.bykat.me
:自動跳轉至主網域 - ✅ 憑證皆有效,SEO 安全、網址乾淨
🧠 我學到的事
- DNS 設定不代表 GitLab 就知道你要憑證
- GitLab Pages 的每一個 domain 都要顯性新增,才能簽憑證
- 憑證、DNS、base_url、跳轉邏輯是四個不同系統,要彼此對齊