Cloudflare Pages にカスタムドメインを設定する手順(2026年版・Apex / サブドメイン両対応)

結論

Cloudflare Pages にカスタムドメインを設定する流れは2つに分かれる。

  1. Cloudflare で DNS 管理しているドメインの場合: Pages のダッシュボードで「Custom domains > Set up a domain」を押すだけ。CNAME(または Apex なら CNAME flattening)が自動で入る。SSL も自動。
  2. 他のレジストラ(お名前.com、Route53、Squarespace 等)で DNS 管理しているドメインの場合: 手動で CNAME レコードを向ける必要がある。Apex ドメインは CNAME が使えないため、ALIAS / ANAME / Flattened CNAME 対応のサービスでないと不可(実質 Cloudflare DNS に移すのが推奨)。

前提

  • Cloudflare アカウント作成済み
  • Cloudflare Pages にプロジェクトをデプロイ済み(*.pages.dev のサブドメインで動いている)
  • 独自ドメインを取得済み(例: example.com または log.example.com

パターン1: Cloudflare で DNS 管理しているドメイン

このパターンが最も簡単で、トラブルが少ない。

Step 1. Pages ダッシュボードでカスタムドメインを追加

  1. Cloudflare ダッシュボード > Workers & Pages > 対象プロジェクトを選択
  2. Custom domains タブを開く
  3. Set up a domain をクリック
  4. 紐づけたいドメイン(example.com または log.example.com)を入力

Step 2. DNS レコードが自動で追加される

Cloudflare が以下のレコードを自動で挿入する。

ドメインタイプ追加されるレコード
Apex(example.comCNAME example.com<project>.pages.dev(CNAME flattening 自動適用)
サブドメイン(log.example.comCNAME log.example.com<project>.pages.dev

CNAME flattening とは、本来 Apex ドメインに CNAME を設定できない RFC 制約を、Cloudflare 側で透過的に A/AAAA レコードに変換する仕組み。Cloudflare DNS でだけ使える便利機能。

Step 3. SSL 証明書が自動発行される

Cloudflare が Universal SSL で証明書を発行する。通常 5〜15 分で完了。ステータスは Pages のカスタムドメイン欄に「Active」と表示されたら使える状態。


パターン2: 他レジストラで DNS 管理している場合

ドメイン取得業者の DNS を使い続けたい場合の手順。Apex ドメインだとハマりやすい。

サブドメイン(log.example.com)の場合

  1. Pages ダッシュボードでカスタムドメイン追加(Step 1 と同じ)
  2. DNS レコードは自動で入らない。Pages 側に「次の CNAME を設定してください」と案内が出る
  3. レジストラの DNS 管理画面で以下を追加:
種類: CNAME
名前: log
値: <project>.pages.dev
TTL: Auto または 3600
  1. DNS の伝播後(数分〜数時間)、Cloudflare 側で検証が走り SSL も自動発行される

Apex ドメイン(example.com)の場合 ⚠️

Apex ドメインには CNAME を直接設定できない(RFC 1912 で禁止)。レジストラが ALIAS / ANAME / Flattened CNAME に対応していれば使える。

サービスApex に CNAME 風レコードを設定可能か
Cloudflare DNS✅ CNAME flattening
Route53✅ ALIAS レコード
DNSimple✅ ALIAS
Google Cloud DNS❌ 不可(A/AAAA で IP 直書きが必要)
お名前.com❌ 標準では不可

Apex ドメインを使いたいなら、ドメインの NS を Cloudflare DNS に移管するのが最も安全で速い解決策。NS 移管自体は10分〜数時間で終わる。


ありがちなエラーと対処

SSL handshake failed または「常にこのサイトの接続は安全ではありません」と出る

  • 原因: Universal SSL の発行待ち(数分〜数時間)
  • 対処: 30 分待つ。それでも出るなら、Cloudflare の SSL/TLS 設定で 暗号化モードが Full (strict) になっているか確認。Pages は自動で Full (strict) になるはずだが、既存ドメインだと別モードが残っていることがある

Custom domain stuck at "Verifying"

  • 原因: CNAME が正しく解決されていない、または DNS が伝播中
  • 対処: コマンドラインで確認:
dig <your-domain> CNAME
# または
nslookup <your-domain>

期待する値は <project>.pages.dev の CNAME。違う値が返る場合は DNS 設定を見直す。

ERR_TOO_MANY_REDIRECTS

  • 原因: SSL/TLS モードが Flexible になっている
  • 対処: Cloudflare ダッシュボード > SSL/TLS > Overview で Full (strict) に変更

404 Not Found がカスタムドメインだけで出る(.pages.dev では正常)

  • 原因: Pages の Custom domain 設定が反映前 または、CNAME のターゲットが間違っている(古い Pages プロジェクトのドメインを指している等)
  • 対処: Pages ダッシュボードで Active になっていることを確認 + DNS の CNAME 先を再確認

デプロイブランチごとに別ドメインを当てたいとき

production ブランチ → example.compreview ブランチ → staging.example.com のような構成にしたい場合。

  • Pages の Production branch に設定したブランチが Apex / メインドメインに紐づく
  • それ以外のブランチは自動で <branch>.<project>.pages.dev のサブドメインに割り当てられる
  • 任意のブランチに独自ドメインを当てたい場合は、Pages > Custom domains で「Production branch」とは別に追加し、ブランチを明示指定する

まとめ

  • Cloudflare DNS を使っているなら、ダッシュボードからワンクリックで設定完了
  • 他レジストラの場合、CNAME を <project>.pages.dev に向ける
  • Apex ドメインは CNAME 不可なので、Cloudflare DNS に移管するか ALIAS 対応サービスを選ぶ
  • SSL は Universal SSL で自動発行(数分〜15分)
  • リダイレクトループが出たら SSL/TLS モードを Full (strict) に

関連リンク

関連記事