本文記錄我用 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:

HostTypeValue
@A35.185.44.232 (GitLab Pages IP)
wwwCNAMEbykat.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.meCNAME → bykat.me
  • 但 GitLab 不知道我有 www 這個需求
  • 它就不會簽憑證、也不會處理跳轉

✅ 解法:加上 www.bykat.me 到 GitLab Pages Domain

GitLab Pages → Settings → Pages Domains

  1. 新增 www.bykat.me
  2. 加入 GitLab 提供的 TXT 記錄(如下)到 Squarespace DNS:
HOST: _gitlab-pages-verification-code.www
TYPE: TXT
VALUE: gitlab-pages-verification-code=xxxxxx...
  1. 等驗證通過
  2. 開啟「自動簽憑證」與「Force HTTPS」

🔁 如果還是看不到更新?快取搞鬼!

你可以嘗試以下幾種方式:

✅ 使用 macOS 清除 DNS 快取:

sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder

這會清除 macOS 本機的 DNS cache。


🧪 最終成果

  • https://bykat.me:正常開啟
  • https://www.bykat.me:自動跳轉至主網域
  • ✅ 憑證皆有效,SEO 安全、網址乾淨

🧠 我學到的事

  1. DNS 設定不代表 GitLab 就知道你要憑證
  2. GitLab Pages 的每一個 domain 都要顯性新增,才能簽憑證
  3. 憑證、DNS、base_url、跳轉邏輯是四個不同系統,要彼此對齊