公開する|Cloudflare Pages と GitHub をつなぎ、独自ドメイン・HTTPS・www の転送を設定する

コース4 Webサイト編 5 / 6・読む時間 約10分・最終確認日

このレッスンの要点

  • Cloudflare Pages で GitHub のリポジトリを選び、Astro の設定(npm run build・dist)で公開します。main は本番、ほかのブランチはプレビューです
  • ネームサーバーを移す前に、いまの DNS のレコードを控えます。そのあと、Pages の画面から example.com をつなぎます
  • 常に HTTPS と、www から example.com への 301 転送を設定します。準備中は noindex にして、検索には出さずにおきます

GitHub のリポジトリとつなぐ

レッスン3で GitHub に置いたリポジトリを、 とつなぎます。Cloudflare のダッシュボードの「Workers & Pages」から、アプリケーションを作る画面に進み、Workers ではなく Pages の側の「Import an existing Git repository」(「Connect to Git」と書かれていることもあります)を選びます。

1GitHub とつなぎ、リポジトリを選ぶ
2「Begin setup」でビルドの設定へ
3プリセットは Astro(npm run build・dist)
4「Save and Deploy」
(イラスト)プロジェクトの名前が、そのまま プロジェクト名.pages.dev の住所になります。

最初のビルドが終わると、プロジェクト名.pages.dev でサイトが見られます。ここから先は、 するたびに自動で作り直されます。

本番とプレビュー

設定の画面で選んだ本番の(main など)に push すると、本番が新しくなります。ほかのブランチに push すると、本番はそのままで、そのブランチ用のプレビューの URL ができます。

本番プレビュー
いつ作られる本番のブランチに push したときほかのブランチに push したとき
住所プロジェクト名.pages.dev と独自ドメインブランチ名.プロジェクト名.pages.dev など
検索自分で noindex を付ける(プロジェクト名.pages.dev も。下の「準備中は検索に出さない」)はじめから noindex が付く
(イラスト)プレビューの URL は、知っていればだれでも開けます。見せたくないときは、プロジェクトの Settings の General にある「Enable access policy」で、見られる人を自分の Cloudflare のアカウントに限れます。

ネームサーバーを Cloudflare に移す

example.com を Pages につなぐには、ドメインを Cloudflare に足して、ネームサーバーを Cloudflare のものに変えます(レッスン4でくわしく)。いちばん大事なのは、移す前に、いまの のレコードを控えておくことです。

1レジストラの画面で、いまのレコード(MX・TXT など)を控える
2Cloudflare にドメインを足し、読みこまれたレコードと見くらべる
3DNSSEC という設定を使っていれば、レジストラで先に切る(使っていなければ飛ばす)
4レジストラで、ネームサーバーを Cloudflare の2つに変える
5Active になり、Cloudflare からメールが届く
(イラスト)Cloudflare はいまのレコードを読みこみますが、読みこみもれもあります。メールのレコード(MX)は、いつも DNS only(Cloudflare を通さず、そのまま答える)です。

ネームサーバーの名前は、1文字でもちがうと動きません。Cloudflare の画面に出たものを、そのままコピーして入れます。反映には時間がかかるので、Active になるのを待ちます。

独自ドメイン・HTTPS・www の転送

ドメインが Active になったら、Pages のプロジェクトの「Custom domains」から「Set up a domain」で example.com を足します。DNS の行は Pages が作ってくれるので、先に自分で CNAME を足さないようにします。www.example.com は Custom domains には足さず、下の手順で example.com に転送します。

設定どこで何が起きる
独自ドメインPages の Custom domainsexample.com でサイトが開ける
証明書(自動)Active になったドメインに、HTTPS の証明書が自動で出る
常に HTTPSSSL/TLS の Edge Certificates の Always Use HTTPS(暗号化のモードが Off のときは、この項目が出てきません)http:// で来た人を https:// に転送する
www の転送DNS の www の行と、Bulk Redirects(301)www.example.com で来た人を example.com に転送する
(イラスト)www の転送は、サイトの中の _redirects ファイルではできません(ドメインをまたぐ転送はできないため)。Cloudflare の Bulk Redirects で作ります。

Bulk Redirects では、転送のリスト(元:www.example.com、先:https://example.com、301)と、そのリストを使うルールを作ります。公式の手順どおり、Preserve query string・Subpath matching・Preserve path suffix・Include subdomains の4つをオンにします。Subpath matching が無いと、www.example.com/articles/ のような下のページが転送されません。そのうえで、DNS に www の行(種類 A・名前 www・IPv4 アドレス 192.0.2.1・Proxied)を足します。Cloudflare の公式には、Redirect Rules の「Redirect from WWW to root」というテンプレートで www から example.com へ 301 で転送する例もあり、こちらでも作れます。作ったら、上の「やってみよう」の依頼文か curl で確かめます。

準備中は検索に出さない

独自ドメインでサイトが開けるようになっても、中身がそろうまでは検索に出したくありません。そこで、準備中は (検索に出さない目印)を付けておきます。目印は、ページの中の meta タグと、HTTP のヘッダ(ページといっしょに届く、目に見えない情報。X-Robots-Tag)のどちらでも効きます。

この講座のサイトの作り(イラスト)
本番の環境変数 PUBLIC_NOINDEX=1 のあいだ
<meta name="robots" content="noindex"> ← 全ページに入る
X-Robots-Tag: noindex ← _headers で全ページに付く
pages.dev の住所には、いつも X-Robots-Tag: noindex
meta と HTTP ヘッダの両方で止めています。外すのは公開の日です(レッスン6)。

この作りは、上の「準備中は noindex にしてもらう依頼文」で Claude Code に作ってもらえます。の PUBLIC_NOINDEX は、Pages のプロジェクトの Settings の Environment variables で、本番に入れておきます。_headers は Cloudflare Pages が読むファイルで、どの住所にどのヘッダを付けるかを書きます。

自動で noindex が付くのは、プレビューの URL です。本番の プロジェクト名.pages.dev は、独自ドメインと同じ中身なので、_headers でいつも noindex を付けておきます(Cloudflare の公式のドキュメントにも、pages.dev の住所を検索に出さないための書き方の例があります)。

よくある勘違い

「DNS に CNAME の行を手で足せば、独自ドメインがつながる」わけではありません

先に DNS の画面で、pages.dev への CNAME を足す
Pages の側でドメインを足していないと、つながらずにエラー(522)になります
Pages の「Custom domains」から、先にドメインを足す
Cloudflare で管理しているドメインなら、DNS の行は Pages が作ってくれます

やってみよう

  1. Cloudflare のダッシュボードの「Workers & Pages」から、Pages の「Import an existing Git repository」(「Connect to Git」と書かれていることもあります)で GitHub のリポジトリを選びます
  2. ビルドの設定は、Astro のプリセット(npm run build・dist)にして「Save and Deploy」を押します
  3. プロジェクト名.pages.dev で見られることを確かめます
  4. Pages の Settings の Environment variables で本番に PUBLIC_NOINDEX=1 を入れてから、下の「準備中は noindex にしてもらう依頼文」で noindex の作りを入れて push します
  5. ドメインを Cloudflare に足し、いまの DNS のレコードを見くらべてから、レジストラでネームサーバーを Cloudflare のものに変えます
  6. ドメインが Active になったら、Pages の「Custom domains」で example.com を足します
  7. Always Use HTTPS をオンにし、DNS に www の行(A・192.0.2.1・Proxied)を足して、Bulk Redirects で www から example.com への 301 転送を作ります
準備中は noindex にしてもらう依頼文(Claude Code に)公開の準備中は、検索に出ないようにしたい。Cloudflare Pages の _headers の公式ドキュメントを読んでから、次のように作って。 - 環境変数 PUBLIC_NOINDEX が 1 のときは、全ページに robots の meta タグの noindex を入れ、_headers で全ページに X-Robots-Tag の noindex を付ける - プロジェクト名.pages.dev の住所には、PUBLIC_NOINDEX に関係なく、いつも X-Robots-Tag の noindex を付ける 作ったら、何を変えたかを短く教えて。
つないだあとを確かめてもらう依頼文(Claude Code に)公開したサイトを curl で確かめて。https://example.com/ が開けること、http:// で開くと https:// に転送されること、https://www.example.com/ が 301 で https://example.com/ に転送されること、いまは noindex が付いていること(meta タグと X-Robots-Tag の両方)を見て、結果を表にして。設定は何も変えないで。
www の転送を確かめる(Mac のターミナルで。Windows では上の依頼文で Claude Code に確かめてもらいます)curl --head -i https://www.example.com/

確認問題

Q1. レジストラでネームサーバーを変える前に、やっておくことは?
Q2. www.example.com から example.com への転送は、何で作る?
Q3. Pages のプレビューの URL は、検索に出る?
今日の練習

Pages のプロジェクトの画面で、いまの本番の URL と、いちばん新しいプレビューの URL を見つけて、両方を開いてみましょう。

この記事の用語

コース4 Webサイト編の目次

  1. 1Webサイトができるまでの全体図
  2. 2どんなサイトにするか決める
  3. 3Claude Code でサイトを作る
  4. 4サーバーとドメインを選ぶ
  5. 5公開する
  6. 6検索に出るようにする