Cloudflare Workers で公開したサイトは、https://mysite.<サブドメイン>.workers.dev のような URL で開けます。長く使うサイトなら、自分のドメインで公開したいところです。

ただ、ドメインをすでにほかのサービスで使っていると、どこから手を付ければよいか迷います。ここでは、次のような状況を例にして手順を説明します。

  • ドメイン(例:example.com)は、ムームードメインで取得した
  • 今は、エックスサーバーでサイトとメールを使っている
  • サイトは Cloudflare Workers に移すが、メールはエックスサーバーのまま使い続けたい
  • www を付けない https://example.com で公開したい

料金や仕様は、2026年9月15日に Cloudflare・ムームードメイン・エックスサーバーの公式ドキュメントで確認した内容です。DNS レコードの引き継ぎと、確認に使うコマンドは、2026年9月16日に見直しました。画面の名前は2026年9月時点のものです。

この記事は、Cloudflare Workers でサイトをすでに公開していることを前提にしています。まだの場合は、先に次の記事を読んでおくと話がつながります。

前提の記事Claude Code と Cloudflare でサンプルサイトを公開するまでClaude Code への1つの指示でサイトを生成し、GitHub 経由で Cloudflare Workers へ無料公開する最短手順と設定の勘所を解説します。

全体像:3つのサービスの役割がどう変わるか

独自ドメインでサイトやメールを使うには、3つの役割が必要です。

  • ドメインの登録:ドメインの持ち主として登録し、更新料を払う先
  • DNS の管理:「example.com のサイトはどのサーバーにあるか」「メールはどこに届けるか」という案内(DNS レコード)を置いておく場所。案内を置いているサーバーをネームサーバーと呼びます
  • サイトとメールの置き場所:実際にサイトを配信し、メールを受け取るサーバー

今の状態と、切り替えたあとの状態を並べると、次のようになります。

役割切り替えたあと
ドメインの登録ムームードメインムームードメイン(変わらない)
DNS の管理エックスサーバーCloudflare
サイトエックスサーバーCloudflare Workers
メールエックスサーバーエックスサーバー(変わらない)

変えるのは、DNS の管理とサイトの置き場所の2つです。ドメインの更新料はこれまでどおりムームードメインに払います。メールアドレスやメールソフトの設定、エックスサーバーの契約もそのままです。

作業は次の順に進めます。サイトが Worker に切り替わるのは最後の手順なので、途中まで進めても、エックスサーバーのサイトとメールはそのまま使えます。

  1. エックスサーバーの DNS レコードを控える
  2. Cloudflare にドメインを追加し、レコードを写す
  3. ムームードメインで、ネームサーバーを Cloudflare に変える
  4. メールが届くことを確かめる
  5. Worker に example.com を割り当て、www.example.com から転送する

補足:Cloudflare だけでメールを使わない理由

Cloudflare にもメールの機能(Email Routing)はありますが、届いたメールを別のアドレスに転送するもので、メールボックスは持っていません。エックスサーバーで作ったメールアドレスをそのまま使うなら、メールはエックスサーバーに残すのが手間の少ない方法です。違いは次の記事の比較表にまとめています。

あわせて読むCloudflare とレンタルサーバーの違いと、Cloudflare での公開が選ばれている理由Webサイトの公開先として比較されることが多い Cloudflare とレンタルサーバーの違いを、仕組み・費用・機能の3つの観点からわかりやすく解説します。近年 Cloudflare の採用が増えている理由や、レンタルサーバーが適しているケースについても紹介します。

なぜネームサーバーを Cloudflare に変える必要があるのか

Worker に独自ドメインを割り当てる機能(カスタムドメイン)は、Cloudflare で DNS を管理しているドメインにしか使えません。Cloudflare のドキュメントでも、使うための条件に「有効な Cloudflare のゾーン」を挙げています。ゾーンは、Cloudflare に追加して、ネームサーバーを Cloudflare に向けたドメインのことです。

ほかにも方法は2つありますが、今回の状況では使いません。

1つ目は、ネームサーバーはそのままで、一部のレコードだけを Cloudflare に向ける方法です(部分セットアップ)。この方法は Business プラン以上でしか使えず、無料プランでは選べません。

2つ目は、ドメインを Cloudflare Registrar に移管する方法です。移管もできますが、ネームサーバーを変えるだけで Worker にはつなげられます。移管すると、更新料の支払い先も変わります。

補足:切り替えたあとは、エックスサーバーの DNS 設定は使われない

ネームサーバーを Cloudflare に変えると、エックスサーバーのサーバーパネルにある「DNSレコード設定」の内容は、インターネットからは参照されなくなります。切り替えたあとに DNS レコードを変えるときは、Cloudflare のダッシュボードで変更します。

切り替える前に確認すること

エックスサーバーの DNS レコードを控える

エックスサーバーのサーバーパネルで「DNSレコード設定」を開き、ドメインを選んで、レコードの一覧を控えます。スクリーンショットを撮るか、表をテキストにコピーしておきましょう。

エックスサーバーのマニュアルによると、ドメインを追加したときには次のレコードが作られます。

ホスト名種別内容
example.comAサーバーの IP アドレス
www.example.comAサーバーの IP アドレス
*.example.comAサーバーの IP アドレス
example.comMXexample.com
example.comTXTv=spf1 +a:sv〇〇〇.xserver.jp +a:example.com +mx include:spf.sender.xserver.jp ~all
example.comNSns1.xserver.jpns5.xserver.jp

このほかに、次のレコードがあれば一緒に控えます。

  • DKIMdefault._domainkey.example.com のような TXT レコード。サーバーパネルの「DKIM設定」を有効にしていると作られ、値は「DKIM設定一覧」の[表示]ボタンからも確認できます。default の部分はセレクタと呼ばれる名前で、メール配信サービスを併用していると google._domainkey のように別の名前のレコードもあります。名前に _domainkey が入っているレコードは、TXT も CNAME もすべて控えます
  • DMARC_dmarc.example.com の TXT レコード
  • 自分で追加したサブドメインや、Google Search Console などの確認用の TXT レコード

引き継ぐレコードと、引き継がなくてよいレコード

控えたレコードを、すべて Cloudflare に写す必要はありません。そのドメイン(サブドメイン)からメールを送っているかどうかで決まります。

引き継ぐのは、次のレコードです。

  • MX:次のMX レコードの向き先と、サーバー名を確かめるのとおり、向き先を sv〇〇〇.xserver.jp に書き換えて写します
  • SPFexample.com の TXT レコード(v=spf1 で始まる値)
  • DKIM:メールを送るドメインのセレクタ付きレコード。_domainkey を含むものは、セレクタが複数あってもすべて写します
  • DMARC_dmarc の TXT レコード(設定していれば)
  • 使っているサブドメインの A・CNAME レコードと、サービスの所有権確認に使っている TXT レコード

反対に、次のレコードは写さなくてかまいません。

  • _adsp._domainkey の TXT レコード:ADSP という、DKIM 署名の有無を宣言する古い仕組みのレコードです。2013年に廃止扱い(Historic)となり、主要なメールサービスはもう参照していません。役割は DMARC が引き継いでいます
  • メールを送らないサブドメインの DKIMdefault._domainkey.blog.example.com など):DKIM は、メールに署名したドメインの鍵だけが参照されます。ブログや検証用のサイトとしてサブドメインを使っているだけなら、受信側がその鍵を探しに来ることはありません
  • 使っていないサブドメインの A レコードや、ワイルドカード(*:ただし、blog.example.com のようなサブドメインをワイルドカードだけで公開している場合は、ワイルドカードを写すか、そのサブドメインの A レコードを作ってから外します
  • NS レコードns1.xserver.jp など):ネームサーバーは、5. ネームサーバーの変更でムームードメイン側から変えます

補足:サブドメインの DKIM を写さないときの、なりすまし対策

サブドメインからメールを送らない場合でも、第三者がそのサブドメインを名乗ってメールを送ることは起こりえます。これは、メインドメインの DMARC レコードに、サブドメイン向けのポリシーを表す sp= を書いておくと対処できます。

たとえば v=DMARC1; p=reject; sp=reject; rua=mailto:dmarc-reports@example.com と書くと、サブドメインから送られたメールは受信側で拒否されます。ただし、拒否する設定にすると、設定漏れがあったときに自分のメールも届かなくなります。まずは p=none で様子を見てから強めるのが安全です。

MX レコードの向き先と、サーバー名を確かめる

控えたレコードのうち、MX の内容を確認します。初期設定のままなら、MX は example.com を指しています。

www なしで公開すると、example.com は Worker を指すようになります。MX が example.com のままだと、メールも Cloudflare に届けようとしてしまい、受け取れなくなります。そこで、MX の向き先を、エックスサーバーのサーバー名(sv〇〇〇.xserver.jp)に書き換えます

サーバー名は、SPF レコードの +a:sv〇〇〇.xserver.jp の部分に書かれています。サーバーパネルの「サーバー情報」でも確認できます。

あわせて、メールソフトの設定も確認しておきましょう。受信サーバーと送信サーバーに sv〇〇〇.xserver.jp を設定していれば、切り替えたあとも変更は要りません。エックスサーバーも、この設定を推奨しています。example.commail.example.com を設定している場合は、切り替える前に sv〇〇〇.xserver.jp に変えておきます。

DNSSEC が有効になっていないか

DNSSEC は、DNS の応答が改ざんされていないことを確かめる仕組みです。Cloudflare のドキュメントでは、DNSSEC が有効なままネームサーバーを変えると、ドメインにつながらなくなることがあると注意しています。

有効かどうかは、Windows なら PowerShell で次のコマンドを実行して確かめます。Google のパブリック DNS(8.8.8.8)に直接聞くことで、手元のルーターに残っている古い情報を避けられます。

PowerShell
Resolve-DnsName example.com -Type DS -Server 8.8.8.8

結果の読み方は次のとおりです。

  • KeyTagDigest を含む DS レコードが表示された場合は、DNSSEC が有効です
  • 「DNS 名が存在しません」というエラーや、.com の SOA レコードだけが返る場合は、DNSSEC は無効です(DS レコードが登録されていない、という応答です)

有効だった場合は、DNSSEC を設定したサービスの管理画面で無効にし、しばらく待ってからネームサーバーを変えます。Cloudflare に移したあとで、Cloudflare 側で改めて有効にできます。

注意点:Windows の nslookup では確かめられない

Windows に入っている nslookup は DS レコードの問い合わせに対応しておらず、unknown query type: DS と表示されて、代わりに A レコード(IP アドレス)が返ってきます。DNSSEC の有無は判断できないので、上の Resolve-DnsName を使います。Mac や Linux では dig DS example.com +short で確かめられます。

エックスサーバーのサイトが見えなくなるのはいつか

エックスサーバーのサイトが example.com で開けなくなるのは、7. Worker への割り当てexample.com の A レコードを削除したときです。ネームサーバーを Cloudflare に変えただけでは、A レコードがエックスサーバーを指したままなので、これまでどおり表示されます。

example.com のトップページに WordPress の記事などを置いていて、それを残しておきたい場合は、A レコードを削除する前に、サブドメインに移すなどの準備をしておきましょう。WordPress簡単インストールで設置したブログなら、サーバーパネルのコピー機能でサブドメインに複製できます。手順は次の記事にまとめています。

先に読む独自ドメインを Cloudflare Workers で使うと、今のブログはどうなる?エックスサーバーのサイトをサブドメインに残す手順エックスサーバーの独自ドメイン直下で動かしている WordPress を、サブドメインに移して残す手順です。サーバーパネルの「サブドメイン設定」と、WordPress簡単インストールのコピー機能だけで移せます。移したあとに確かめることと、独自ドメインを Worker に渡すときの注意点まで紹介します。

補足:サブドメインはエックスサーバーに残せる

Worker に割り当てられるのは、入力したホスト名だけです。blog.example.com のようなサブドメインでエックスサーバーのサイトを公開している場合は、そのサブドメインの A レコードを Cloudflare に写して「DNS のみ」にしておけば、これまでどおりエックスサーバーが表示します。SSL 証明書も、エックスサーバーで発行したものがそのまま使われます。

サブドメインの A レコードを作らず、ワイルドカード(*)でまとめて公開していた場合は、ワイルドカードを「DNS のみ」で写しておくだけでもかまいません。Cloudflare のドキュメントによると、ワイルドカードは blog.example.com のようなサブドメインにも使われ、同じ名前の A レコードがある場合はそちらが優先されます。

ただし、ワイルドカードは、使っていないサブドメインや打ち間違えた名前まで、すべてエックスサーバーに向けます。使うサブドメインが決まっているなら、A レコードを1つずつ作ってワイルドカードを外すほうが、あとから見直すときに分かりやすいと筆者は考えています。どちらの場合も、ワイルドカードを削除するなら、使っているサブドメインの A レコードを先に作ります

チェックリスト:切り替える前に

  • エックスサーバーの DNS レコード(DKIM・DMARC を含む)を控えた
  • サブドメインからメールを送っているかを確かめ、引き継ぐレコードを決めた
  • エックスサーバーのサーバー名(sv〇〇〇.xserver.jp)を確認した
  • メールソフトの受信・送信サーバーが sv〇〇〇.xserver.jp になっている
  • DNSSEC が無効になっている
  • エックスサーバーのサイトを残すかどうか決めた(サブドメインで公開しているものがあれば、A レコードを控えた)

Cloudflare にドメインを追加し、DNS レコードを整える

ここからは Cloudflare のダッシュボードで作業します。この章の作業だけでは、サイトにもメールにも影響はありません。

  1. Cloudflare ダッシュボードで「ドメイン」を開き、「ドメインを追加」を選ぶ

    Cloudflare ダッシュボードの「ドメイン」の画面。右上と中央に「ドメインを追加」ボタンがある
  2. 「サイトを追加」の画面で、「ドメインを接続」を選ぶ

    「サイトを追加」の画面。「ドメインを接続」「ドメインを転送」「ドメインを購入」の3つが並んでいる
  3. 「ドメイン名」に example.com を入力し、「DNSレコードをインポート」が「自動」になっていることを確かめて、「続行」を選ぶ

    「ドメインを接続」の画面。ドメイン名の入力欄、AI トレーニングと検索ポリシーの設定、「DNSレコードをインポート」(自動)、「続行」ボタンがある
  4. プランは Free を選ぶ

  5. 「DNS レコードを確認する」の画面で、読み込まれたレコードをエックスサーバーの控えと見比べて整える(下の表を参照)

    「DNS レコードを確認する」の画面。見つかったレコードの数と、見逃しの可能性があるという注意、プロキシと DNS のみの説明が表示されている
  6. 「アクティベーションに進む」を選び、表示される Cloudflare のネームサーバー2つを控える(5. ネームサーバーの変更で使う)

画面は2026年9月時点のものです。画面の順番は変わることがあるので、迷ったら Cloudflare の案内に沿って進めてください。

補足:「ドメインを転送」は選ばない

「ドメインを転送」は、ドメインの登録先を Cloudflare Registrar に移す(移管する)ためのメニューです。今回はムームードメインに登録したまま使うので、「ドメインを接続」を選びます。

補足:AI トレーニングと検索ポリシーの設定

「ドメインを接続」の画面にある「AIトレーニングと検索ポリシーを設定」は、検索エンジンや AI のクローラーにサイトの情報を取らせるかどうかの設定です。DNS やメールには関係しません。迷ったら「推奨」の表示がある初期値のまま進めてかまいません。

注意点:自動で読み込まれないレコードがある

Cloudflare のドキュメントでも、クイックスキャンですべてのレコードが見つかるとは限らないとされています。特に DKIM(default._domainkey)や DMARC(_dmarc)は読み込まれないことがあるので、控えた一覧と1行ずつ見比べて、足りないものを追加しましょう。

レコードを整える

読み込まれた直後は、A レコードのプロキシ ステータスが「プロキシ済み」(オレンジの雲)になっています。ここから、次の表のように整えます。エックスサーバーの控えから変えるのは、MX の向き先と、A レコードをすべて「DNS のみ」に切り替えることの2つです。

プロキシ ステータスは、一覧のトグルを押すと「プロキシ済み」と「DNS のみ」が切り替わります。

読み込まれた直後のレコード一覧。A レコード3件が「プロキシ済み」、MX と TXT は「DNS のみ」になっている(ドメイン名と IP アドレスは伏せてある)
名前種類内容プロキシ
example.comAエックスサーバーの IP アドレスDNS のみ(7. Worker への割り当てで削除する)
wwwAエックスサーバーの IP アドレスDNS のみ(転送を設定するときに変える)
*Aエックスサーバーの IP アドレスDNS のみ(使っているサブドメインが A レコードで足りていれば削除してよい)
example.comMXsv〇〇〇.xserver.jp(優先度は控えた値のまま)
example.comTXTSPF(控えた値のまま)
default._domainkey などセレクタごとTXTDKIM(控えた値のまま)
_dmarcTXTDMARC(控えた値のまま)

整えると、次のように A レコードも「DNS のみ」に変わります。

整えたあとのレコード一覧。A レコード3件も「DNS のみ」に切り替わっている(ドメイン名と IP アドレスは伏せてある)

NS レコード(ns1.xserver.jp など)は写しません。ネームサーバーは次の章でムームードメイン側で変えます。3.2 引き継ぐレコードと、引き継がなくてよいレコードで「写さなくてよい」と判断したものも、ここでは追加しません。

補足:DKIM の値が2つに分かれて表示されるのは正常

DKIM の公開鍵を貼り付けると、Cloudflare の画面では “v=DKIM1; k=rsa; p=…” “…IDAQAB” のように、引用符で2つに区切られて表示されることがあります。TXT レコードは1つの文字列が255文字までと決まっていて、2048ビットの鍵はこれを超えるためです。

受信側のメールサーバーは、分かれた文字列をつなげて1本の鍵として読みます。値をコピーするときは、引用符とその間の空白を外して1本につなげた文字列を貼り付ければ、Cloudflare 側で自動的に区切られます。

注意点:メールに関わるレコードは「DNS のみ」にする

Cloudflare の A レコードには、「プロキシ済み」(オレンジの雲)と「DNS のみ」(灰色の雲)の切り替えがあります。プロキシは Web サイトの通信を Cloudflare 経由にする機能で、メールの通信(SMTP・POP3・IMAP)は通せません。

MX の向き先を sv〇〇〇.xserver.jp にしておけば、メールは Cloudflare のプロキシを通らずにエックスサーバーへ届きます。サイト用の A レコードは、Worker に切り替えるまでは今と同じ状態を保つため、「DNS のみ」にしておきます。

補足:SPF の値はそのまま写してよい

SPF は、そのドメインのメールを送ってよいサーバーを示すレコードです。切り替えたあと、値の中の +a:example.com は Cloudflare を指すようになりますが、エックスサーバーから送るメールは +a:sv〇〇〇.xserver.jpinclude:spf.sender.xserver.jp で認められるので、送信には影響しません。

ムームードメインでネームサーバーを変更する

レコードを整えたら、ムームードメインでネームサーバーを Cloudflare に変えます。

  1. ムームードメインのコントロールパネルにログインし、「ドメイン管理」から「ネームサーバー設定変更」を開く

  2. ドメインの一覧で、example.com の「ネームサーバー設定変更」を選ぶ。エックスサーバーを使っている場合は、「サービス」が「弊社サービス以外 のネームサーバー」になっていて、ns1.xserver.jp から ns5.xserver.jp が設定されています

    ムームードメインのネームサーバー設定変更の画面。サービスが「弊社サービス以外 のネームサーバー」で、ネームサーバー1〜5に ns1.xserver.jp から ns5.xserver.jp が設定されている
  3. 「GMOペパボ以外 のネームサーバーを使用する」を選び、ネームサーバー1と2に、Cloudflare のネームサーバーを入力する。エックスサーバーの5つは消し、残りの欄は空にする

    「GMOペパボ以外 のネームサーバーを使用する」を選んだ状態。ネームサーバー1と2に Cloudflare のネームサーバーが入力され、3〜6は空になっている
  4. ページ下部の「ネームサーバー設定変更」ボタンで確定する

ネームサーバー名は、Cloudflare に表示されたとおりに1文字も違えずに入力します。Cloudflare のドキュメントでも、正確に写さないと DNS が正しく動かないと注意しています。ムームードメインの画面にも、IP アドレスは指定できないこと、.com のドメインはネームサーバーを2つ以上指定する必要があることが書かれています。Cloudflare のネームサーバーは2つ渡されるので、そのまま条件を満たします。

Cloudflare のダッシュボードでドメインの概要を開くと、ネームサーバーの変更が行き渡るまでの間は、「レジストラが新しいネームサーバーを伝播するのを待っています」と表示されます。ムームードメインで変更する前から、この表示です。待ち時間は、Cloudflare のドキュメントでは最大24時間、ムームードメインのヘルプでは2〜3日かかる場合がある、とされています。「ネームサーバを今すぐ確認」を押すと、その時点の状態を確かめられます。

ドメインの概要の画面。「レジストラが新しいネームサーバーを伝播するのを待っています」と表示され、「ネームサーバを今すぐ確認」ボタンがある

行き渡ると、この表示が「ドメインは Cloudflare によって保護されています」に変わります。これで、DNS の管理が Cloudflare に移りました。

ドメインの概要の画面。「ドメインは Cloudflare によって保護されています」と表示されている

ヒント:反映を待っている間もメールは止まらない

反映を待っている間は、エックスサーバーのネームサーバーに問い合わせる人と、Cloudflare のネームサーバーに問い合わせる人が混ざります。MX の向き先は example.comsv〇〇〇.xserver.jp で違いますが、どちらもエックスサーバーのサーバーを指しているので、メールはどちらの経路でも届きます。サイトも、A レコードを同じ内容で写しているので、これまでどおり表示されます。

注意点:エックスサーバーのドメイン設定は削除しない

サイトを Cloudflare に移しても、エックスサーバーのサーバーパネルの「ドメイン設定」から example.com を削除してはいけません。メールアカウントはこのドメイン設定にひも付いているので、削除するとメールが使えなくなります。

メールの送受信を確かめる

ドメインが「アクティブ」になったら、Cloudflare のレコードが使われているかを確かめます。

PowerShell
Resolve-DnsName example.com -Type NS
Resolve-DnsName example.com -Type MX
Resolve-DnsName example.com -Type TXT
Resolve-DnsName default._domainkey.example.com -Type TXT

次のように表示されれば、切り替えはできています。

  • NS:Cloudflare のネームサーバー2つが表示される
  • MX:sv〇〇〇.xserver.jp が表示される
  • TXT:SPF のレコード(v=spf1 で始まる値)が表示される
  • DKIM:v=DKIM1; で始まる鍵が、末尾まで欠けずに表示される

ヒント:Mac や Linux で確かめる場合

dig NS example.com +short のように、dig コマンドでも同じことを確かめられます。DKIM なら dig default._domainkey.example.com TXT +short です。

コマンドで確かめたら、実際にメールを送って確かめます。Gmail など、ほかのサービスのアドレスから自分のアドレス(info@example.com など)に送り、届いたメールに返信します。Gmail で受け取った返信の「メッセージのソースを表示」を開き、SPF と DKIM が PASS になっていれば、送信側の設定も写せています。

Worker に独自ドメインを割り当てる

ここでサイトを Worker に切り替えます。この章の作業を終えると、https://example.com で Worker のサイトが開くようになります。

先に example.com の A レコードを削除する

Cloudflare の DNS に、エックスサーバーを指す example.com の A レコードが残っていると、カスタムドメインを追加できません。「すでに DNS レコードがある」という内容のエラーになります。

Cloudflare ダッシュボードの「DNS」→「レコード」で、example.com の A レコードを削除します。削除してから次の手順を終えるまでの間は、example.com でサイトが開けなくなるので、続けて作業しましょう。

wrangler.toml にドメインを書く(おすすめ)

GitHub と連携して公開しているサイトは、push するたびに npx wrangler deploy で公開されます。Cloudflare のドキュメントでは、Wrangler を使う場合は設定ファイル(wrangler.toml)を正として、ダッシュボードで設定を変えないことを勧めています。そこで、カスタムドメインも wrangler.toml に書きます。

wrangler.toml(追加する部分)
[[routes]]
pattern = "example.com"
custom_domain = true

サイトの中に書いている URL も、同じタイミングで独自ドメインに変えておくと、公開したときに URL がそろいます。Claude にまとめて頼むと確実です。

Claude への指示の例
Cloudflare Workers のサイトを、独自ドメイン example.com で公開します。
- ドメインは Cloudflare に追加済みで、example.com の A レコードは削除しました
- wrangler.toml に example.com をカスタムドメインとして追加してください(www は付けません)
- astro.config.mjs の site など、サイトの URL を書いている箇所をすべて探し、https://example.com に書き換えてください
- 書き換える箇所の一覧を見せて、確認してから変更してください
- ビルドが通ることを確認してから、GitHub に反映してください

push して公開が終わると、Cloudflare が example.com の DNS レコードと SSL 証明書を自動で作ります。Worker の「設定」→「ドメインとルート」に example.com が表示され、https://example.com でサイトが開けば完了です。

ダッシュボードから追加する場合

wrangler.toml を使わない場合は、ダッシュボードから追加します。

  1. 「Workers & Pages」で Worker を選ぶ
  2. 「設定」→「ドメインとルート」で「追加」を選ぶ
  3. 「カスタムドメイン」を選び、example.com を入力して追加する

注意点:ダッシュボードと wrangler.toml の両方で設定しない

Cloudflare のドキュメントによると、ダッシュボードでルートを変えても、wrangler.toml にルートを書いている場合は、次のデプロイで設定ファイルの内容に上書きされます。どちらで管理するかを1つに決めておきましょう。

www からのアクセスを example.com に転送する

カスタムドメインは、入力したホスト名にだけ割り当てられます。example.com を割り当てても、www.example.com は Worker につながりません。エックスサーバーで www 付きの URL を使っていた場合に備えて、www.example.com へのアクセスを example.com に転送しておきます。

  1. 「DNS」→「レコード」で www の A レコードを編集し、IPv4 アドレスを 192.0.2.1、プロキシを「プロキシ済み」にする

    192.0.2.1 は、説明用に予約されている、どこにもつながらない IP アドレスです。プロキシ済みにしておくと、アクセスは Cloudflare で受け取られ、この IP アドレスに届く前に、次の手順で作る転送のルールで example.com に送られます。Cloudflare のドキュメントでも、この値を使う例が紹介されています。

  2. 「ルール」→「リダイレクト ルール」を開き、「新しいシングル リダイレクトを作成する」に並ぶ「WWW からルートにリダイレクト」の「テンプレートから作成」を選ぶ

    「リダイレクト ルール」の画面。「新しいシングル リダイレクトを作成する」に、HTTP から HTTPS へのリダイレクト、WWW からルートにリダイレクト、別のドメインにリダイレクトするの3つのテンプレートが並んでいる
  3. 内容を確かめ、クエリ文字列を残したい場合は「クエリ文字列を保存する」にチェックを入れて、「デプロイ」を選ぶ

    リダイレクト ルールの設定画面。ターゲット URL が https://${1}、ステータス コードが 301、「クエリ文字列を保存する」のチェックは外れていて、右下に「デプロイ」ボタンがある

テンプレートを使うと、次の値が入った状態でルールが作られます。テンプレートが見つからない場合は、リダイレクト ルールを新しく作り、同じ値を設定します。

項目設定する値
リクエスト URL(ワイルドカード パターン)https://www.*
ターゲット URLhttps://${1}
ステータス コード301 - Permanent Redirect
クエリ文字列を保存する初期値はオフ。クエリを残すならオンにする

「クエリ文字列を保存する」は、https://www.example.com/articles?utm_source=x のように ? 以降が付いた URL を、そのまま転送先にも引き継ぐ設定です。オフのままだと ? 以降が落ちるので、広告や SNS のリンクを受けることがあるなら、オンにしておきましょう。

補足:「このルールはあなたのトラフィックには適用されない可能性があります」と出たら

手順3で「デプロイ」を選んだときに、「DNS 構成により、www のトラフィックがプロキシされていない可能性があります」という確認画面が出ることがあります。

「このルールはあなたのトラフィックには適用されない可能性があります」という確認画面。「とにかくルールを無視して展開する」と「新しい プロキシ DNS レコードを作成します」が選べる

手順1で www のレコードをプロキシ済みにしてあるなら、「とにかくルールを無視して展開する」を選んで、そのままデプロイしてかまいません。www のレコードをまだ作っていない場合は、「新しい プロキシ DNS レコードを作成します」を選ぶと、Cloudflare がプロキシ済みのレコードを作ってくれます。

どちらの場合も、デプロイしたあとに https://www.example.com を開いて、転送されるかを必ず確かめましょう。

設定したら、https://www.example.com/articles のような URL を開き、https://example.com/articles に転送されることを確かめます。

切り替えたあとにやること

サイトの URL がそろっているか確かめる

Astro のサイトでは、astro.config.mjssite をもとに、canonical・OGP 画像・RSS・サイトマップの URL が作られます。公開したページのソースを開き、<link rel="canonical">og:image の URL が https://example.com で始まっているかを確かめましょう。

workers.dev の URL を残すか決める

独自ドメインを割り当てても、https://mysite.<サブドメイン>.workers.dev の URL はそのまま開けます。canonical で example.com を示していれば、検索結果で2つの URL が競うことは起きにくい、と筆者は考えています。

止める場合は、wrangler.tomlworkers_dev = false と書きます。ただし、Cloudflare のドキュメントによると、workers.dev を止めると、ブランチごとのプレビュー URL も標準では作られなくなります。プレビュー URL で公開前に確認している場合は、preview_urls = true もあわせて書きます。

wrangler.toml(workers.dev の URL を止める場合)
workers_dev = false
preview_urls = true

外部のサービスと、古い URL を整理する

  • Google Search Console を使っている場合は、example.com をプロパティとして追加する(DNS の TXT レコードで確認する場合は、Cloudflare にレコードを追加する)
  • SNS のプロフィールなどに書いた URL を、https://example.com に書き換える
  • エックスサーバーのサイトと Worker のサイトで記事の URL が違う場合は、よく読まれていたページだけでも、public/_redirects で新しい URL へ転送する

エックスサーバーの契約は、メールのために続けます。サイトのファイルは不要になったら整理してかまいませんが、5. ネームサーバーの変更の注意点のとおり、ドメイン設定は残しておきましょう。

あとからエックスサーバーにサブドメインを追加する場合

ワイルドカード(*)の A レコードをエックスサーバーに向けたまま残してあるなら、新しいサブドメインを追加するときに、Cloudflare 側での作業はありません。エックスサーバーのサーバーパネルで「サブドメイン設定」を追加すれば、そのまま使えます。

shop.example.com を追加した場合の流れは、次のとおりです。

  1. ワイルドカードの A レコードによって、shop.example.com はエックスサーバーの IP アドレスに解決される
  2. エックスサーバーは、リクエストのホスト名を見て、shop.example.com 用のフォルダの中身を返す

エックスサーバーのサーバーパネルにある「DNSレコード設定」は、2. なぜネームサーバーを変えるのかの補足のとおり、もう参照されません。それでもサブドメインが使えるのは、名前解決を Cloudflare のワイルドカードが引き受けているためです。

注意点:SSL 証明書は条件を満たしているか確かめる

エックスサーバーの無料独自 SSL は、マニュアルによると「対象ドメインの『www あり/なし』両方の A レコードが、契約サーバーを参照している」ことが条件です。自動更新にも同じ条件があります。ワイルドカードはサブドメインの下の階層にも使われるため、shop.example.comwww.shop.example.com のどちらもエックスサーバーを指し、条件は満たせるはずです。

ただし、ワイルドカードで足りるかはマニュアルに書かれていません。サブドメインを追加したら、https:// で開いて証明書のエラーが出ないか確かめてください。発行に失敗する場合は、SSL 設定で「他社ネームサーバーでのDNS認証」を選び、表示されたレコードを Cloudflare に追加します。

なお、あとからそのサブドメインを Worker や別のサービスに向けたくなったときは、Cloudflare にそのサブドメインのレコードを作ります。個別のレコードは、ワイルドカードより優先されます。

まとめ

ムームードメインで取得したドメインを Cloudflare Workers で使うには、ドメインを移管するのではなく、ネームサーバーを Cloudflare に変えます。メールをエックスサーバーに残すなら、切り替える前に DNS レコードを Cloudflare に写し、MX の向き先を sv〇〇〇.xserver.jp に書き換えておくのがポイントです。

サイトが切り替わるのは、Worker に example.com を割り当てた時点です。そこまでは、エックスサーバーのサイトとメールをそのまま使いながら、落ち着いて進められます。

あわせて読むCloudflare の workers.dev サブドメインを変更する方法と、名前の決め方Cloudflare アカウント共通の workers.dev サブドメイン(〇〇.workers.dev の〇〇の部分)を変更する手順と、変更前に確認すること、名前を決めるときの注意点とコツを紹介します。