ドメインをCloudflareに切り替える手順|EmDash移行の仕上げ

連載「WordPressからEmDashへ移行する」の第5回です。第4回までで仮アドレス(workers.dev)に仕上げたサイトを、本番のドメイン manual-chang.com に切り替えます。切り替えたあとの、管理画面のパスキー、Search Console、お問い合わせの通知メールまでを扱います。

この回は、つまずきがいちばん多い回でした。特に、切り替えたあとも古いサイトやエラーが出る件は、日をまたいで続きました。

DNSの調査とコードの変更はClaude Code(パソコンの中でコマンドを打ってくれるAI)に頼みました。画面の操作は筆者が行いました。

✅ この記事で解決できること

  • ドメインをCloudflareに追加して、EmDashのサイトに切り替えられる
  • DNSレコードの写し方と、メールを使わないドメインの設定がわかる
  • 「Hostname already has externally managed DNS records」など、切り替えで出るエラーの対処がわかる
  • 切り替えたあとに古いサイトやERR_SSL_PROTOCOL_ERRORが出る理由がわかる
  • 管理画面のパスキー、Search Console、フォームの通知メールを整えられる
  • 所要時間:ネームサーバーの変更から表示の切り替えまで約10分(全体の時間は記録なし)

🎯 こんな人に最適です

  • 第4回までで、仮アドレスのサイトを仕上げた人
  • ムームードメインなどで取ったドメインを、Cloudflareに切り替えたい人
  • 切り替えたのに古いサイトが出て、困っている人

🔧 必要な環境・前提

  • ドメインの管理:ムームードメイン(元のDNSはムームーDNS)
  • Cloudflare:ドメインはFreeプラン、WorkersはWorkers Paid(第3回)
  • EmDash 1.4.0、Claude Code
  • 使っていないもの:このドメインのメール(@manual-chang.com)
  • 検証日:2026年10月31日

⚠️ 先に第4回までを済ませてください

切り替えた瞬間から、読者は新しいサイトを見ます。見た目・URL・フォーム・SEOを整える 第4回「EmDashでデザイン・フォーム・SEOを作り直す手順」 を先に済ませてください。また、古いサーバーは、切り替えが落ち着くまで止めないでください。

📋 作業全体の流れ

  • 手順1:今のDNSを確かめて、方針を決める
  • 手順2:Cloudflareにドメインを追加する
  • 手順3:DNSレコードを確かめて直す
  • 手順4:ムームードメインでネームサーバーを変える
  • 手順5:EmDashのサイトにドメインをつなぐ
  • 手順6:管理画面のドメインを変えて、パスキーを登録し直す
  • 手順7:Search Consoleを確認し直す
  • 手順8:フォームの通知メールを設定する
切り替えの順番(Cloudflareにドメイン追加 → ネームサーバー変更 → ドメインをつなぐ → パスキー → Search Console・通知メール)と、切り替え直後に古いサーバーが見える期間の図

この記事で出てくる言葉

言葉意味
DNSドメインと住所(サーバーのIPアドレス)をつなぐ、電話帳のようなしくみ
ネームサーバーそのドメインの電話帳を置いている場所
DNSレコード電話帳の1行。A=サイトの住所、MX=メールの届け先、TXT=メモ欄(SPF、DMARC、所有者の確認に使う)
SPF・DMARC「このドメインからのメールは本物か」を、受け取る側が確かめるための設定
Proxied・DNS onlyCloudflareを通すかどうか(オレンジの雲/グレーの雲)
カスタムドメインWorker(EmDashのサイト)に、自分のドメインを直接つなぐ機能
TTL電話帳の情報を、ほかの場所で何秒覚えておいてよいかの時間
パスキーパスワードの代わりに、Touch IDなどでログインするしくみ。アドレスごとに作られる

手順1:今のDNSを確かめて、方針を決める

Claude Codeに、今のDNSを調べてもらいました(dig というコマンドを使います)。

  • A:manual-chang.com と www は、ロリポップのサーバー
  • MX:ロリポップのメールサーバー
  • TXT:ロリポップ向けのSPFと、DMARC
  • Search Console用のTXTは無し(WordPressのプラグインが、ファイルで確認していたため)

このドメインのメールは使っていません。そこで、MXとロリポップ向けのSPFは写さず、「メールを送らない・受け取らない」設定にすることにしました。なりすましメールに使われにくくなります。

💡
ポイント:ドメインの登録情報(whois)では、登録業者が「GMO Internet / Onamae.com」と表示されました。しかし、実際に契約しているのはムームードメインです(ムームードメインはGMOの取次店)。ネームサーバーは、実際に契約しているサービスで変えます。

手順2:Cloudflareにドメインを追加する

  1. Cloudflareのダッシュボード(管理画面)で、「Domains」→「Add domain」を押します。
  2. 「Connect a domain」を選びます。
  3. 「Domain name」にドメイン名を入れます。
  4. AIボットの扱い(Search・Agent・Training)は、初期値の「Allow (do not block)」のままにしました。
  5. 「Import DNS records」が「Automatic」になっているのを確かめて、「Continue」を押します。
Cloudflareの「Connect your domain」画面。Domain name に manual-chang.com、AIボットの設定は3つとも Allow、Import DNS records は Automatic
  1. プランの選択で、左端の「Free」の「Select plan」を押します。

⚠️ 青いボタンはProプランです

いちばん目立つ青いボタンは、月$20のProプランです。選ぶのは左端のFreeです。ここで選ぶのはドメインのプランで、第3回で入ったWorkers Paid(月5ドル〜)とは別物です。

「Select a plan for manual-chang.com」の画面。Free($0)、Pro(青い Select plan ボタン)、Business、Enterprise の4つ

手順3:DNSレコードを確かめて直す

「Review your DNS records」に、自動で読み込まれたレコードが並びます。筆者の場合は、Aが2つ、MXが1つ、TXTが2つでした。手順1で調べた結果と一致していたので、漏れはありません。

「Review your DNS records」の画面。Records we found: 2 A、1 MX、2 TXT。Aは2つとも Proxied

次のように直しました。

  • Aの2つを「DNS only」にします。切り替えるまでは、古いサイトをそのまま見せておくためです。
  • MXを削除します。
  • @(ドメインそのもの)のTXTを v=spf1 -all にします。「このドメインからはメールを送らない」という意味です。
  • _dmarcのTXTを v=DMARC1; p=reject; にします。「このドメインを名乗るメールは受け取らないで」という意味です。
💡
ポイント:筆者は一度、SPFとDMARCの中身を入れ違えました。_dmarc にSPF、@ にDMARCが入っています。画面の行の順番(_dmarc が上)と、頼んだ説明の順番(SPFが先)が逆だったためです。直したら、Nameの列を必ず確かめてください。
入れ違えた状態。_dmarc の行に「v=spf1 -all」、manual-chang.com の行に「v=DMARC1; p=rej…」
直した状態。Aが2つ(DNS only)、_dmarc に「v=DMARC1; p=rej…」、manual-chang.com に「v=spf1 -all」。MXは無し

「Continue to activation」を押すと、「not fully protected」(Cloudflareを通していない)という警告が出ました。すべてDNS onlyにしたのは意図どおりなので、「I'll do this later」を押しました。

手順4:ムームードメインでネームサーバーを変える

Cloudflareの「Update your nameservers」に、割り当てられたネームサーバーが2つ表示されます。筆者の場合は anna.ns.cloudflare.com と kaiser.ns.cloudflare.com でした。名前はアカウントごとに違うので、自分の画面に出たものを使ってください。

「Update your nameservers to activate Cloudflare」の画面。割り当てられたネームサーバー2つと、消すネームサーバー(dns01/02.muumuu-domain.com)

ここからは、ムームードメインの管理画面での操作です。

  1. 左メニューの「ドメイン管理」→「ネームサーバ設定変更」を開き、ドメインを選びます。
  2. 「GMOペパボ以外 のネームサーバーを使用する(他社)」を選びます。
ムームードメインの「ネームサーバー設定変更」。今は「ムームードメインのネームサーバー(ムームーDNS)を使用する」が選ばれている。下の方に「GMOペパボ以外 のネームサーバーを使用する(他社)」
  1. 「ネームサーバー1」「ネームサーバー2」に、Cloudflareの2つを入れます。
  2. 「ネームサーバー設定変更」を押します。
  3. 「ネームサーバーの設定を変更しました。」と出れば完了です。
「ネームサーバー1」に anna.ns.cloudflare.com、「ネームサーバー2」に kaiser.ns.cloudflare.com を入力した状態
「ネームサーバーの設定を変更しました。」と、「反映には2〜3日かかる場合があります。」の説明

筆者が変えたのは0時42分です。.comの管理元(レジストリ)にはすぐ反映され、Cloudflare側も数十秒で有効になりました。ただし、「2〜3日かかる場合があります」の本当の意味は、このあとわかりました(後の「切り替えたのに、古いサイトやエラーが出る」)。

手順5:EmDashのサイトにドメインをつなぐ

手順5-1:設定を書いて出し直す(Claude Code)

Claude Codeが、設定ファイル wrangler.jsonc に、manual-chang.com と www を「カスタムドメイン」として書き足しました。www に来た人は manual-chang.com に転送します。

出し直す(npm run deploy)と、次のエラーが出ました。

Hostname already has externally managed DNS records [code 100117]
💡
ポイント:ロリポップ向けのAレコードが残っているのが原因です。上書きする指定をしても同じエラーでした。また、Wrangler(Cloudflare用のコマンド)のログインの権限では、DNSレコードを消せませんでした。Aレコードは、人がダッシュボードで削除します。

手順5-2:古いAレコードを消す

  1. Cloudflareで manual-chang.com を開き、「DNS」→「Records」を開きます。
  2. ロリポップを指しているAレコード2つ(manual-chang.com と www)を削除します。TXTは残します。
CloudflareのDNS Recordsの一覧(削除前)。Aが2つ(DNS only)、TXTが2つ(DMARC reject、SPF -all)

削除してすぐに出し直すと、manual-chang.com と www がEmDashのサイトにつながりました。削除してからつながるまでの空白は1〜2分です。切り替えが終わったのは0時53分でした。

手順5-3:仮アドレスも生かしておく

本番のドメインを書き足すと、Wranglerは仮アドレス(workers.dev)を自動でオフにします。仮アドレスが「見つかりません」になったので、設定ファイルに次の1行を足して元に戻しました。仮アドレスは、手順6で管理画面に入るときに使います。

"workers_dev": true,

手順5-4:表示を確かめる

Claude Codeに、Cloudflareの住所を直接指定して確かめてもらいました。

  • 新しいサイトが表示され、旧URL 129件がすべて表示できた
  • canonical(正式なURLの印)が https://manual-chang.com/… になっている
  • Googleアナリティクスのタグがあり、noindex(検索に出さない印)は無い
  • www は manual-chang.com に転送される

切り替えたのに、古いサイトやエラーが出る

切り替えたあとも、筆者のMacではしばらく古いWordPressのサイトが表示されました。さらにその後、Chromeで次のエラーが何度か出ました。公開した記事を開いたときと、管理画面を開いたときです。

ERR_SSL_PROTOCOL_ERROR
Chromeの「このサイトは安全に接続できません」「manual-chang.com から無効な応答が送信されました。」「ERR_SSL_PROTOCOL_ERROR」

Claude Codeに調べてもらうと、次のことがわかりました。

  • Macでドメインの住所を6回調べると、2回は古いロリポップ、4回はCloudflareが返ってきました。
  • 元のムームーDNSは、ネームサーバーを変えたあとも古い情報を答え続けていました。
  • .comの管理元が持つ「このドメインの電話帳はここ」という情報は、有効期限(TTL)が2日です。プロバイダなどが切り替え前の「ムームーDNSに聞け」を覚えている間は、古いサーバーに案内されることがあります。
  • 古いロリポップのWordPressも、まだ動いています。ChromeがCloudflare用の暗号化の設定と、古いサーバーの住所を混ぜてしまい、接続エラーになったと考えられます。
💡
ポイント:ムームードメインの「反映には2〜3日かかる場合があります」は、「新しい情報がすぐ見える人もいれば、古い情報を最大2日見続ける人もいる」という意味でした。筆者は最初「実際はすぐだった」と思いましたが、半分だけ正しかったことになります。

対処は次のどちらかです。

  • Chromeのアドレス欄に chrome://net-internals/#dns と入れて開き、「Clear host cache」を押す(Chromeが覚えている住所を消す)。
  • Safariなど、ほかのブラウザで開く。
Chromeの chrome://net-internals/#dns の画面。左に DNS、右に「Host resolver cache」と「Clear host cache」ボタン

ネームサーバーを変えた10月31日0時42分から最大2日、つまり11月2日1時ごろまでには自然に直る見込みです。この記事を書いている時点では、まだ確かめていません。

⚠️ コマンドも古いサーバーにつながりました

この期間は、ブラウザだけでなくコマンドも古いサーバーにつながりました。EmDashのコマンドでログインしようとすると、「Unexpected token '<', "<!DOCTYPE "... is not valid JSON」で止まりました。問い合わせが古いWordPressに届き、ページのHTMLが返ってきたためです。Claude Codeが、manual-chang.com だけCloudflareの住所を使うようにして実行しました(パソコンの設定は変えていません)。

手順6:管理画面のドメインを変えて、パスキーを登録し直す

第2回で書いたとおり、パスキーはアドレスごとに作られます。仮アドレスで作ったパスキーは、manual-chang.com では使えません。そこで、管理画面のアドレスを変えてから、本番用のパスキーを登録します。この作業は、仮アドレスの管理画面にログインした状態で始めます。

💡
ポイント:公式ドキュメントの「Change domain」は、日本語の管理画面では「ドメインを変更」(設定 → 一般 の「サイトURL」の横)です。「Check and switch」は「確認して切り替え」です。セキュリティ設定でパスキーを追加すると、今開いているアドレス用になるので注意してください。
  1. 管理画面の「設定」→「一般」を開き、「サイトURL」の横の「ドメインを変更」を押します。
  2. 「新しいドメイン」に manual-chang.com を入れて、「確認して切り替え」を押します。

筆者の場合は、ここで「https://manual-chang.comではまだこのサイトが配信されていません」と出ました。

「ドメインを変更」の画面。新しいドメインに manual-chang.com、赤い文字で「https://manual-chang.comではまだこのサイトが配信されていません」。下に「確認せずにhttps://manual-chang.comを使用」ボタン

外から確かめると、manual-chang.com では新しいサイトが配信されていました。EmDashの確認は、サイト自身が自分の本番ドメインを見に行く方式です。切り替え直後のため、そこでうまく確かめられなかったようです(原因は確定していません)。

  1. 自分のブラウザで manual-chang.com に新しいサイトが出ることを確かめてから、「確認せずにhttps://manual-chang.comを使用」を押します。
  2. 「サイトURL」が https://manual-chang.com に変わり、「manual-chang.comで続行」ボタンが出ます。
設定 → 一般の「サイトURL」が https://manual-chang.com になった状態。青い欄に「…にログインしています」と「manual-chang.comで続行」ボタン
  1. 「manual-chang.comで続行」を押し、続行します。
  2. manual-chang.com の管理画面で「セキュリティ設定」を開き、「パスキーを追加」を押します。筆者はMacのTouch IDで登録しました。
  3. 一覧に「名前のないパスキー」(最終使用日時 今)が増えれば完了です。
「セキュリティ設定」のパスキー一覧。「Setup passkey」(最終使用日時 3 時間前)と「名前のないパスキー」(最終使用日時 今)

古い「Setup passkey」は、仮アドレス用として残しました。

手順7:Search Consoleを確認し直す

旧サイトでは、WordPressのプラグイン(Site Kit)が、ファイルやメタタグで所有者を確認していました。WordPressをやめると、この確認が切れます。DNSを使う「ドメイン」プロパティで確認し直しました。

  1. Search Consoleで「プロパティを追加」を押し、「ドメイン」に manual-chang.com を入れます。
  2. DNSがCloudflareだと自動で判定されます。「確認を開始」を押します。
Search Consoleの「DNS レコードでのドメイン所有権の確認」。手順に「Cloudflare.com」、右下に「確認を開始」ボタン
  1. Cloudflareの「Authorize DNS records from Google」が開きます。manual-chang.com にTXTが1件だけ追加されることを確かめて、「Authorize」を押します。
  2. Search Consoleに「所有権を証明しました」と出れば完了です。追加されたTXTは消さないでください。
Cloudflareの「Authorize DNS records from Google」。「This is a one-time authorization.」と、追加されるTXTが1件、下に「Authorize」ボタン
💡
ポイント:この許可は一度きりです。今後、GoogleにDNSを変える権限を渡すものではないと、画面に書かれています。

続けて、サイトマップを送信します。ドメインプロパティでは、sitemap.xml だけを入れると「サイトマップ アドレスが無効です」になりました。https://manual-chang.com/sitemap.xml のように、https:// から入れます。

送信直後は「取得できませんでした」と表示されました。翌日には「成功しました」に変わり、検出されたページは34(記事32と固定ページ2)でした。最初の表示は一時的なものでした。

あわせて、タグページを検索結果から外しました(noindex, follow)。旧URL 129件のうち90件がタグページで、中身の薄いページが多いと、Googleが記事の登録を後回しにしがちだからです。タグページ自体は表示されたままです。

手順8:フォームの通知メールを設定する

第4回で作ったお問い合わせフォームに、通知メールを付けます。EmDashのメールのプラグインは、Cloudflareの「Email Sending」を使います。料金はWorkers Paidが必要で、月3,000通まで無料です。

💡
ポイント:手順3で、ドメイン本体は「メールを送らない」設定にしました。それを残したまま通知メールを送るため、送信専用のサブドメイン mail.manual-chang.com を使いました。EmDash公式の例も、サブドメインになっています。
  1. Cloudflareで「Compute」→「Email Service」→「Email Sending」を開き、「Onboard Domain」を押します。
  2. Zoneに manual-chang.com、Subdomainに mail を入れます。
  3. 「Verify DNS records」で、追加されるレコードがすべて mail の下にあることを確かめます。ドメイン本体のレコードには触りません。
「Verify DNS records」。cf-bounce.mail.manual-chang.com にMXが3つとSPF、DKIM、_dmarc.mail.manual-chang.com にDMARC reject。下に「Activate」ボタン
  1. 「Activate」を押します。
  2. 「Sending status」が「Enabled」、「DNS records」が「Configured」になれば完了です。
Email Sending の mail.manual-chang.com の画面。右の Configuration summary に「Sending status: Enabled」「DNS records: Configured」

このあとはClaude Codeの作業です。

  • 設定ファイル astro.config.mjs に、メールのプラグイン(送信元は noreply@mail.manual-chang.com、名前は「マニュアルちゃん」)を足しました。
  • wrangler.jsonc に、メールを送るための設定を足して、出し直しました。
  • フォームの管理画面には通知先の欄が無いため、データベースのフォーム設定に、筆者のメールアドレスを直接入れました。

管理画面のテスト送信と、お問い合わせフォームからの送信の両方を試しました。どちらもGmailの受信トレイ(迷惑メールではない)に「マニュアルちゃん」から届きました。通知メールの返信先は、フォームに入力されたメールアドレスになるので、そのまま「返信」すれば問い合わせた人に返せます。

ただし、件名は「New submission: お問い合わせ」と英語で、送信時刻も世界標準時のままでした。プラグイン側の決まった文言です。

うまくいかないときは

症状原因対処
whoisの登録業者と、契約しているサービスが違う取次店を通して登録されている実際に契約しているサービスでネームサーバーを変える
SPFとDMARCの中身が入れ違う画面の行の順番と、説明の順番が逆Nameの列(@ と _dmarc)を必ず確かめる
「Hostname already has externally managed DNS records [code 100117]」古いAレコードが残っているダッシュボードでAレコードを削除してから、もう一度出し直す
本番のドメインをつないだら、仮アドレスが「見つかりません」カスタムドメインを書くと、workers.devが自動でオフになる"workers_dev": true を書く
切り替えたのに古いサイトが出る手元やプロバイダが、古い住所を覚えている時間を置く
※最大2日続くことがある
ChromeでERR_SSL_PROTOCOL_ERROR古い住所と新しい設定が混ざったchrome://net-internals/#dns で「Clear host cache」。またはSafariで開く
コマンドが「Unexpected token '<'…」で止まるコマンドも古いサーバーにつながっている時間を置く。またはCloudflareの住所を指定して実行する
「ドメインを変更」で「まだこのサイトが配信されていません」切り替え直後で、EmDash自身の確認が通らない自分で表示を確かめてから「確認せずに…を使用」
本番のドメインで管理画面にログインできないパスキーはアドレスごと「manual-chang.comで続行」から、本番用のパスキーを登録する
Search Consoleで「サイトマップ アドレスが無効です」ドメインプロパティでは、完全なURLが必要https:// から入れる

まとめ

  • Cloudflareにドメインを追加し、自動で読み込まれたDNSレコードを確かめて直します。メールを使わないなら、「送らない・受け取らない」設定にします。
  • ネームサーバーは、実際に契約しているサービス(今回はムームードメイン)で変えます。
  • 古いAレコードを消してから、EmDashのサイトにドメインをつなぎます。
  • 切り替えたあとも、最大2日は古いサイトやエラーが出ることがあります。古いサーバーは、落ち着くまで止めません。
  • 管理画面は「ドメインを変更」でアドレスを変え、本番用のパスキーを登録し直します。
  • Search ConsoleはDNSで確認し直し、フォームの通知メールは送信専用のサブドメインから送ります。

これで、manual-chang.com はEmDash(Cloudflare)で動くようになりました。旧URL 129件もそのまま表示できます。ロリポップは、ほかのサイトがあるため解約していません。

移行はここで一区切りです。次は、第6回でClaudeからEmDashに記事を書けるようにします。

連載の他の回

この記事を書いた人

hiroshi