Cloudflare Pagesにカスタムドメインを設定し301リダイレクトする

カスタムドメイン設定
Cloudflare Pages でデプロイしたブログ(murosans-blog.pages.dev)にカスタムドメインを設定します。
Cloudflare Pages のダッシュボードを開き、「カスタムドメイン」タブから「カスタムドメインを設定」。

ドメインを入力し、「ドメインをアクティブにする」だけで完了しました。
ドメインもCloudflareで取得したので、CNAMEレコードは自動で追加されていました。

1 分程待つと、もう新しいドメインでアクセスできるようになっていました。
リダイレクト設定
このままだと旧URLでもアクセスできてしまうので、新しいURLに301リダイレクトするように設定します。
Cloudflareダッシュボードの一括リダイレクトページ、「一括リダイレクト リストの作成」から設定します。 リストの名前を適当に入力し、「次へ」

URLを追加するページで、ソースURLに旧URLを、ターゲットURLに新URLを入力します。
ついでに、クエリ文字列、サブパス、パスサフィックスを保持するようにチェックを入れました。
「サブドメインを含める」にチェックを入れるとプレビューできなくなるので注意してください。

保存すると、ルールの設定ページに移動するので、作成したリストを選択して保存します。
しばらくすると新しいURLにリダイレクトされるようになりました。設定した通り、パスやクエリ文字列も保持されています。
bash
$ curl 'https://murosans-blog.pages.dev/' -I
HTTP/2 301
location: https://blog.murosan.dev/
...
$ curl 'https://murosans-blog.pages.dev/blog/subpage?some_query=value' -I
HTTP/2 301
location: https://blog.murosan.dev/blog/subpage?some_query=value
...
プレビュー用のURLは301リダイレクトされません。
(リストの設定ページで「サブドメインを含める」にチェックを入れるとプレビュー用URLもリダイレクトされます。)
bash
# プレビューページへのAccessポリシーを設定しているので、認証ページにリダイレクトされている
$ curl https://preview.murosans-blog.pages.dev/ -I
HTTP/2 302
location: https://xxxx.cloudflareaccess.com/cdn-cgi/access/login/preview.murosans-blog.pages.dev ...