Settings > General 中的 Site URL 是站台的公開位址。電子郵件和外掛中的連結、站台地圖、robots.txt、hreflang 連結、社群圖片 URL,以及 SEO 面板中設定的正規連結(canonical link)都會使用它。請透過 Change domain 對話方塊來修改,該對話方塊會在切換之前檢查新網域是否能提供該站台。
只有管理員可以變更網域。
開始之前
請先將新網域指向站台。EmDash 在切換時會檢查該網域,因此該網域必須已經透過 https:// 提供該站台。
- Cloudflare Workers: 在 Cloudflare 控制台的 Workers & Pages 中開啟你的 Worker,進入 Domains 分頁並新增該網域。Wrangler 設定請參閱自訂網域。
- Node.js 及其他主機: 為該網域建立 DNS 記錄和憑證,並將其路由到提供目前位址的同一台伺服器。
在瀏覽器中開啟 https://<新網域>/_emdash/admin。如果看到 EmDash 登入頁面,表示網域已就緒。
如果站台設定了 siteUrl、EMDASH_SITE_URL 或 SITE_URL,電子郵件和外掛中的連結將使用該位址而不是 Site URL,Settings > General 中也會註明這一點。請修改設定並重新部署,以便同時遷移這些連結。
變更網域
-
開啟 Settings > General,選擇 Site URL 旁邊的 Change domain。
-
輸入新網域,例如
www.example.com。也可以輸入完整的來源(origin),例如https://www.example.com。不接受路徑和連接埠。 -
選擇 Check and switch。
EmDash 會向
https://www.example.com/_emdash/api/site/domain-proof要求一次性驗證碼。驗證碼相符後,它會將https://www.example.com儲存為 Site URL 並關閉對話方塊。
Settings > General 中尚未儲存的變更在切換後仍保留在表單中。請像往常一樣儲存它們。
新位址何時生效
- 電子郵件: 登入、邀請、自助註冊、帳號復原和留言通知郵件會立即連結到新位址。
- 外掛:
ctx.site.url會在伺服器重新啟動後變更;在 Cloudflare Workers 上,則會在新的 isolate 啟動後變更。 - 站台地圖和
robots.txt: 瀏覽器和共用快取最多可能保留舊版本一小時(站台地圖)或一天(robots.txt)。
在你從主機上移除舊位址之前,它會繼續提供該站台。若要將訪客從舊位址導向新位址,請在主機或 DNS 供應商處新增重新導向。
遷移後登入
通行密鑰只能在建立它的位址上使用。遷移後,在舊位址建立的通行密鑰無法在新位址使用。請在仍登入舊位址時,把你自己的登入遷移到新位址:
-
在 Settings > General 中,選擇 Site URL 下方的 **Continue on www.example.com**。當你登入的位址不是 Site URL 時,會出現該按鈕。如果已設定
siteUrl,則改為與該位址比較。 -
在新位址開啟的登入頁面上選擇 Continue。該連結只能使用一次,並在 5 分鐘後失效。
-
Settings > Security 會開啟並顯示通行密鑰表單。選擇 Register Passkey,為新位址建立通行密鑰。
此操作無需電子郵件即可完成。當電子郵件已設定時,其他使用者可以透過魔法連結在新位址登入,然後在那裡新增通行密鑰。在此之前,只要舊位址仍提供該站台,他們就繼續在舊位址登入。
通知其他使用者
當電子郵件已設定,且使用者使用通行密鑰登入時,管理員可以告知其他所有使用者現在應在哪裡登入:
-
在 Settings > General 中,選擇 Site URL 下方的 Email users。
-
選擇 Send emails。
每位帳號未被停用的使用者(你本人除外)都會收到一封郵件,告知站台已遷移到已設定的 siteUrl(未設定時為 Site URL),並附帶指向該位址登入頁面的按鈕。該郵件不會讓任何人自動登入。郵件會說明舊位址的通行密鑰在新位址上無法使用,使用者需要先透過郵件連結登入。隨後會顯示一則訊息,說明已寄出多少封郵件,以及郵件服務供應商拒收了多少封。每個站台每小時最多可寄送 3 次這類郵件。
如果檢查失敗
對話方塊會顯示檢查失敗的原因:
www.example.com does not resolve to a public address: 該網域還沒有公開的 DNS 記錄,或指向了私有網路。請完成 DNS 設定後重試。Could not reach https://www.example.com: 請求逾時或連線失敗,例如憑證尚未就緒。請等待幾分鐘後重試。https://example.com redirects to https://www.example.com. Enter that address instead.: 該網域發生了重新導向。請輸入它重新導向到的位址。https://www.example.com does not serve this site yet: 該網域有回應,但回應的不是本站台。它可能仍指向先前的主機,或者前面有 Cloudflare Access 之類的登入頁面。在 Cloudflare 上,請在 Worker 的 Domains 分頁中將該網域新增為 Custom Domain。路由(route)對該檢查無效:Cloudflare 不會為 Worker 向同一區域內自身路由發送的請求執行 Worker。
不經檢查直接使用位址
檢查失敗時,對話方塊會提供 Use … anyway。它會不經檢查直接儲存該位址。當站台無法從網際網路存取時使用它,例如在 http://localhost:4321 進行本機開發,或使用位於登入頁面之後的預備網域。
站台地圖和搜尋中繼資料會按輸入的原樣使用所儲存的位址,包括 https://example.com/blog 這樣的路徑。電子郵件和外掛只使用其來源(origin),並且僅在它使用 https://,或主機為 localhost、127.0.0.1 或 [::1] 時才會使用。否則,它們會繼續使用站台最初設定時所用的位址。
選擇之前請仔細檢查該位址。沒有任何機制確認它能存取到該站台。