タグ
#Cloudflare
Cloudflareに関する記事を公開しています。
Astro.rewrite(\"/404\") が 200 を返してソフト 404 になる
Astro SSR の動的ルートでエントリ未検出時に Astro.redirect(\"/404\") すると 302、Astro.rewrite(\"/404\") にしても HTTP ステータスは 200 になりソフト404になります。Astro が rewrite でステータスを 200 にリセットする機構(astro@7.0.7 のソース)と、404.astro 側で Astro.response.status = 404 を立てて正しく 404 を返す方法をまとめます。
WordPress 移行後に記事内の画像が 404 になるときの対処
WordPress をヘッドレス CMS へ移行したあと、本文が旧 /wp-content/uploads/ を参照したままで記事内の画像が 404 になる問題。404 の 9 割超は実体が移行済みで URL だけが古いので、本文を書き換えずキャッチオール動的ルート 1 本でファイル名からメディアを引いて 301 する設計と、WordPress 命名(-WxH サムネイル・-e 編集版)や .gitignore の落とし穴をまとめます。
D1 の無駄なクエリを削ったらクエリ数が増えた原因
エッジ SSR(Cloudflare Workers + D1)ではレイテンシの支配項は CPU ではなく DB への往復回数です。明らかに無駄なクエリを削ったら本数が 19→22 に増えた原因であるリクエスト内キャッシュの重複排除と、推測で書き換えず「表示が変わっていないこと」を HTML のバイト一致で証明しながら最適化するウォーム A/B 計測の手順をまとめます。
Google Analytics を入れずに Cloudflare でブログを監視する
ブログ運用の一次監視に欲しいのは「配信が壊れていないか」で、その情報は GA4(gtag.js)を入れなくても取れます。GA4 のクライアント計測とは別レイヤーの Cloudflare エッジ計測(GraphQL Analytics API の httpRequestsAdaptiveGroups)を GitHub Actions で定期実行し、死活チェック・週次レポート・Issue 自動起票までを組む監視設計を、GA との役割分担つきでまとめます。
DNS が古い環境からドメイン切り替え直後のサイトを確認する
ドメイン切り替え直後、手元の DNS キャッシュやプロキシが古い IP を返して検証にならないとき、DoH(dns.google/resolve)で権威側の現在値を引き、curl --connect-to で名前解決だけ上書きして SNI・証明書検証込みの本番同様の確認をする手順をまとめます。
BudouX を Cloudflare Workers で使うと window is not defined
日本語の改行位置制御ライブラリ BudouX を Cloudflare Workers など DOM のないサーバー環境で import すると、エントリポイントが読み込む win.js がトップレベルで window を参照しているため、import した時点でエラーになります。budoux/module/parser.js の Parser とモデルを直接 import する回避策と、wbr + word-break: keep-all の実装例をまとめます。
独自ドメイン移行でパスキーのログインができなくなる原因
workers.dev などのステージング URL で登録したパスキーは、独自ドメインへ切り替えた瞬間に使えなくなります。WebAuthn の RP ID 束縛という仕様の話と、締め出されたときの復旧経路(メール配送の Slack すげ替え)、切り替え前にやるべき手順をまとめます。
Astro で Webhook の署名検証に生ボディを渡す方法
Slack や Stripe の Webhook 署名検証は「生のリクエストボディ」に対する HMAC のため、フレームワークが body を先にパースすると検証が通らなくなります。原因と、Astro / Cloudflare Workers での生ボディ取得(request.text / clone)方法をまとめます。
Cloudflare Pages Functionsでメールが送信できない場合の対処法
Cloudflare Pagesの利用者に向けて、メール送信機能のセキュリティ対策が強化されました。これにより、SPF認証とDomain Lockdownの設定が必要となり、正確なTXTレコードの指定が求められるようになりました。これらの変更に対応するための具体的な手順をご説明します。
Vercel, Netlify, Cloudflare Pages 課金するならどれ?
2023年版では「1ドル安いNetlify」が結論でしたが、NetlifyはPro月20ドルのクレジット制になり、Cloudflareは課金の入口がWorkers Paid(月5ドル〜)に変わりました。2026年の現行料金で考え直しています。
Next/ImageはCloudflare Pagesの無料プランで使えない
Next.jsには、画像をキャッシュして各デバイスサイズに最適化して配信するNext/Imageコンポーネントがあり、通常は面倒な画像最適化を簡単に実現できますが、Cloudflare Pagesの無料プランでは使えません。
Cloudflare Pages Functionsの制限サイズエラー
Next.js製のサイトをCloudflare Pagesにデプロイする際、Functionsのスクリプトサイズが大きすぎる旨のエラーが発生してデプロイに失敗しました。
Vercel, Netlify, Cloudflare Pages 無料で使うならどれ?
JAMstackのWebサイトなどをホスティングする際、主な選択肢になるのがVercel, Netlify, Cloudflare Pagesの3つかと思います。どれも無料で利用できるため、まずは体験してみるのが1番ですが、無料で使う場合Cloudflare Pagesが最強です。
Cloudflare Pagesでお問い合わせフォーム(自動返信あり)を作る
この記事で紹介していたMailChannels無料連携は2024年8月に終了しました。2026年現在のCloudflareでの問い合わせフォームの作り方を、Slack通知・Email Service・メールAPI(自動返信)・MailChannels継続の4通りで解説します。
Cloudflare PagesでNuxt3サイトのホスティングに失敗する
おそらく一時的なエラーかと思いますが、執筆時点、Cloudflare PagesでBuild output directory(出力先のフォルダ)の値にdistを指定してNuxt3の静的ビルド(SSG)をすると失敗します。
Cloudflare Pagesの無料プランは商用利用できる — 旧2.8条の廃止と2026年時点の制限
結論から言うと商用利用できます。制限の根拠とされてきた旧2.8条は2023年の規約改定で廃止されました。規約のどこに書かれているか、2026年時点で無料プランに残っている実務的な制限、PagesとWorkersの関係を整理します。