開発未分類
Cloudflare Pages にカスタムドメインを設定する手順(2026年版・Apex / サブドメイン両対応)
結論
Cloudflare Pages にカスタムドメインを設定する流れは2つに分かれる。
- Cloudflare で DNS 管理しているドメインの場合: Pages のダッシュボードで「Custom domains > Set up a domain」を押すだけ。CNAME(または Apex なら CNAME flattening)が自動で入る。SSL も自動。
- 他のレジストラ(お名前.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 ダッシュボードでカスタムドメインを追加
- Cloudflare ダッシュボード > Workers & Pages > 対象プロジェクトを選択
- Custom domains タブを開く
- Set up a domain をクリック
- 紐づけたいドメイン(
example.comまたはlog.example.com)を入力
Step 2. DNS レコードが自動で追加される
Cloudflare が以下のレコードを自動で挿入する。
| ドメインタイプ | 追加されるレコード |
|---|---|
Apex(example.com) | CNAME example.com → <project>.pages.dev(CNAME flattening 自動適用) |
サブドメイン(log.example.com) | CNAME 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)の場合
- Pages ダッシュボードでカスタムドメイン追加(Step 1 と同じ)
- DNS レコードは自動で入らない。Pages 側に「次の CNAME を設定してください」と案内が出る
- レジストラの DNS 管理画面で以下を追加:
種類: CNAME
名前: log
値: <project>.pages.dev
TTL: Auto または 3600
- 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.com、preview ブランチ → 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) に
関連リンク
関連記事
- Cloudflare Pages へのデプロイ手順とトラブルシューティング(同サイト内のデプロイメモを参照)