ドメインを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:フォームの通知メールを設定する

この記事で出てくる言葉
| 言葉 | 意味 |
|---|---|
| DNS | ドメインと住所(サーバーのIPアドレス)をつなぐ、電話帳のようなしくみ |
| ネームサーバー | そのドメインの電話帳を置いている場所 |
| DNSレコード | 電話帳の1行。A=サイトの住所、MX=メールの届け先、TXT=メモ欄(SPF、DMARC、所有者の確認に使う) |
| SPF・DMARC | 「このドメインからのメールは本物か」を、受け取る側が確かめるための設定 |
| Proxied・DNS only | Cloudflareを通すかどうか(オレンジの雲/グレーの雲) |
| カスタムドメイン | 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は写さず、「メールを送らない・受け取らない」設定にすることにしました。なりすましメールに使われにくくなります。
手順2:Cloudflareにドメインを追加する
- Cloudflareのダッシュボード(管理画面)で、「Domains」→「Add domain」を押します。
- 「Connect a domain」を選びます。
- 「Domain name」にドメイン名を入れます。
- AIボットの扱い(Search・Agent・Training)は、初期値の「Allow (do not block)」のままにしました。
- 「Import DNS records」が「Automatic」になっているのを確かめて、「Continue」を押します。

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

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

次のように直しました。
- Aの2つを「DNS only」にします。切り替えるまでは、古いサイトをそのまま見せておくためです。
- MXを削除します。
- @(ドメインそのもの)のTXTを
v=spf1 -allにします。「このドメインからはメールを送らない」という意味です。 - _dmarcのTXTを
v=DMARC1; p=reject;にします。「このドメインを名乗るメールは受け取らないで」という意味です。


「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 でした。名前はアカウントごとに違うので、自分の画面に出たものを使ってください。

ここからは、ムームードメインの管理画面での操作です。
- 左メニューの「ドメイン管理」→「ネームサーバ設定変更」を開き、ドメインを選びます。
- 「GMOペパボ以外 のネームサーバーを使用する(他社)」を選びます。

- 「ネームサーバー1」「ネームサーバー2」に、Cloudflareの2つを入れます。
- 「ネームサーバー設定変更」を押します。
- 「ネームサーバーの設定を変更しました。」と出れば完了です。


筆者が変えたのは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]手順5-2:古いAレコードを消す
- Cloudflareで manual-chang.com を開き、「DNS」→「Records」を開きます。
- ロリポップを指しているAレコード2つ(manual-chang.com と www)を削除します。TXTは残します。

削除してすぐに出し直すと、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
Claude Codeに調べてもらうと、次のことがわかりました。
- Macでドメインの住所を6回調べると、2回は古いロリポップ、4回はCloudflareが返ってきました。
- 元のムームーDNSは、ネームサーバーを変えたあとも古い情報を答え続けていました。
- .comの管理元が持つ「このドメインの電話帳はここ」という情報は、有効期限(TTL)が2日です。プロバイダなどが切り替え前の「ムームーDNSに聞け」を覚えている間は、古いサーバーに案内されることがあります。
- 古いロリポップのWordPressも、まだ動いています。ChromeがCloudflare用の暗号化の設定と、古いサーバーの住所を混ぜてしまい、接続エラーになったと考えられます。
対処は次のどちらかです。
- Chromeのアドレス欄に
chrome://net-internals/#dnsと入れて開き、「Clear host cache」を押す(Chromeが覚えている住所を消す)。 - Safariなど、ほかのブラウザで開く。

ネームサーバーを変えた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 では使えません。そこで、管理画面のアドレスを変えてから、本番用のパスキーを登録します。この作業は、仮アドレスの管理画面にログインした状態で始めます。
- 管理画面の「設定」→「一般」を開き、「サイトURL」の横の「ドメインを変更」を押します。
- 「新しいドメイン」に manual-chang.com を入れて、「確認して切り替え」を押します。
筆者の場合は、ここで「https://manual-chang.comではまだこのサイトが配信されていません」と出ました。

外から確かめると、manual-chang.com では新しいサイトが配信されていました。EmDashの確認は、サイト自身が自分の本番ドメインを見に行く方式です。切り替え直後のため、そこでうまく確かめられなかったようです(原因は確定していません)。
- 自分のブラウザで manual-chang.com に新しいサイトが出ることを確かめてから、「確認せずにhttps://manual-chang.comを使用」を押します。
- 「サイトURL」が https://manual-chang.com に変わり、「manual-chang.comで続行」ボタンが出ます。

- 「manual-chang.comで続行」を押し、続行します。
- manual-chang.com の管理画面で「セキュリティ設定」を開き、「パスキーを追加」を押します。筆者はMacのTouch IDで登録しました。
- 一覧に「名前のないパスキー」(最終使用日時 今)が増えれば完了です。

古い「Setup passkey」は、仮アドレス用として残しました。
手順7:Search Consoleを確認し直す
旧サイトでは、WordPressのプラグイン(Site Kit)が、ファイルやメタタグで所有者を確認していました。WordPressをやめると、この確認が切れます。DNSを使う「ドメイン」プロパティで確認し直しました。
- Search Consoleで「プロパティを追加」を押し、「ドメイン」に manual-chang.com を入れます。
- DNSがCloudflareだと自動で判定されます。「確認を開始」を押します。

- Cloudflareの「Authorize DNS records from Google」が開きます。manual-chang.com にTXTが1件だけ追加されることを確かめて、「Authorize」を押します。
- Search Consoleに「所有権を証明しました」と出れば完了です。追加されたTXTは消さないでください。

続けて、サイトマップを送信します。ドメインプロパティでは、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通まで無料です。
- Cloudflareで「Compute」→「Email Service」→「Email Sending」を開き、「Onboard Domain」を押します。
- Zoneに manual-chang.com、Subdomainに mail を入れます。
- 「Verify DNS records」で、追加されるレコードがすべて mail の下にあることを確かめます。ドメイン本体のレコードには触りません。

- 「Activate」を押します。
- 「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に記事を書けるようにします。



