新しいドメインへ移行する

このページ

Settings > General の Site URL は、サイトの公開アドレスです。メールやプラグイン内のリンク、サイトマップ、robots.txt、hreflang リンク、ソーシャル画像の URL、SEO パネルで設定した canonical リンクがこの値を使用します。変更するには 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 にもそのことが表示されます。それらのリンクも移行するには、設定を変更して再デプロイします。

ドメインを変更する

  1. Settings > General を開き、Site URL の横にある Change domain を選択します。

  2. 新しいドメイン(例: www.example.com)を入力します。https://www.example.com のような完全なオリジンも使えます。パスとポートは使用できません。

  3. 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: ブラウザーや共有キャッシュは、古いバージョンを最大 1 時間(サイトマップ)または 1 日(robots.txt)保持することがあります。

古いアドレスは、ホストから削除するまでサイトを配信し続けます。古いアドレスの訪問者を新しいアドレスへ誘導するには、ホストまたは DNS プロバイダーでリダイレクトを追加します。

移行後にサインインする

パスキーは、作成したアドレスでのみ機能します。移行後、古いアドレスで作成したパスキーは新しいアドレスでは使えません。古いアドレスにまだサインインしているうちに、自分のサインインを新しいアドレスへ移しましょう。

  1. Settings > General の Site URL の下にある Continue on www.example.com を選択します。このボタンは、Site URL 以外のアドレスでサインインしているときに表示されます。siteUrl が設定されている場合は、そのアドレスと比較されます。

  2. 新しいアドレスで開いたサインインページで Continue を選択します。このリンクは 1 回だけ使え、5 分で期限切れになります。

  3. パスキーのフォームが表示された状態で Settings > Security が開きます。Register Passkey を選択して、新しいアドレス用のパスキーを作成します。

この手順はメールがなくても行えます。ほかのユーザーは、メールが設定されていれば新しいアドレスでマジックリンクを使ってサインインでき、そこでパスキーを追加できます。それまでは、古いアドレスがサイトを配信している間は、そちらでサインインし続けます。

ほかのユーザーに知らせる

メールが設定されていて、ユーザーがパスキーでサインインしている場合、管理者はほかのすべてのユーザーに新しいサインイン先を知らせることができます。

  1. Settings > General の Site URL の下にある Email users を選択します。

  2. Send emails を選択します。

アカウントが無効化されていないユーザー(あなたを除く)全員に、サイトが設定済みの siteUrl(未設定の場合は Site URL)へ移行したことを知らせるメールが届きます。メールには、そのアドレスのサインインページへのボタンが含まれます。このメールで誰かがサインインされることはありません。古いアドレスのパスキーは新しいアドレスでは使えないこと、そしてまずメールのリンクでサインインすることを説明します。その後、送信されたメールの件数と、メールプロバイダーに拒否された件数がメッセージで表示されます。メールは、サイトごとに 1 時間あたり 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 タブでカスタムドメインとしてドメインを追加してください。確認にはルートは使えません。Cloudflare は、Worker が同じゾーン内の自身のルートに送信するリクエストでは Worker を実行しないためです。

確認なしでアドレスを使う

確認に失敗すると、ダイアログに Use … anyway が表示されます。これを選ぶと、確認せずにアドレスを保存します。たとえば http://localhost:4321 でのローカル開発や、ログインの背後にあるステージングドメインなど、サイトにインターネットから到達できない場合に使います。

サイトマップと検索用メタデータは、保存されたアドレスを入力されたとおりに使用します。https://example.com/blog のようなパスも含まれます。メールとプラグインはそのオリジンだけを使用し、しかもそれが https:// を使っている場合、またはホストが localhost、127.0.0.1、[::1] の場合に限られます。それ以外の場合は、サイトを設定したときのアドレスを使い続けます。

選択する前に、アドレスをよく確認してください。そのアドレスがサイトに到達することを確認する手段はありません。