タグ
#Cloudflare
Cloudflareに関する記事を公開しています。
Astro SSR で「404 ページに飛ばす」がソフト404になる問題 — Astro.rewrite と Astro.response.status で正しく 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 になる — /wp-content/uploads/ を動的ルート1本で旧 URL のまま救う
WordPress をヘッドレス CMS へ移行したあと、本文が旧 /wp-content/uploads/ を参照したままで記事内の画像が 404 になる問題。404 の 9 割超は実体が移行済みで URL だけが古いので、本文を書き換えずキャッチオール動的ルート 1 本でファイル名からメディアを引いて 301 する設計と、WordPress 命名(-WxH サムネイル・-e 編集版)や .gitignore の落とし穴をまとめます。
無駄なクエリを削ったらクエリが増えた — エッジ SSR のリクエスト内キャッシュ重複排除と、表示不変を A/B で証明する計測
エッジ SSR(Cloudflare Workers + D1)ではレイテンシの支配項は CPU ではなく DB への往復回数です。明らかに無駄なクエリを削ったら本数が 19→22 に増えた——その裏にあるリクエスト内キャッシュの重複排除という機構と、推測で書き換えず「表示が変わっていないこと」を HTML のバイト一致で証明しながら最適化するウォーム A/B 計測の手順をまとめます。
Google Analytics を入れずにブログ群を運用する — Cloudflare GraphQL Analytics と GitHub Actions による監視設計
ブログ運用の一次監視に欲しいのは「配信が壊れていないか」で、それは GA4(gtag.js)を入れなくても取れます。GA4 のクライアント計測とは別レイヤーの Cloudflare エッジ計測(GraphQL Analytics API の httpRequestsAdaptiveGroups)を GitHub Actions で回し、死活チェック・週次レポート・Issue 自動起票までを組む監視設計を、GA との役割分担つきでまとめます。
DNS が古い環境からドメイン切り替え直後のサイトを検証する — DoH と curl --connect-to
ドメイン切り替え直後、手元の DNS キャッシュやプロキシが古い IP を返して検証にならないとき、DoH(dns.google/resolve)で権威側の現在値を引き、curl --connect-to で名前解決だけ上書きして SNI・証明書検証込みの本番同様の確認をする手順をまとめます。
BudouX をサーバー環境で使うと window is not defined になる — DOM 非依存の Parser を直接 import する
日本語の改行位置制御ライブラリ BudouX を Cloudflare Workers など DOM のないサーバー環境で import すると、エントリポイントが巻き込む win.js のトップレベル window 参照で即死します。budoux/module/parser.js の Parser とモデルを直接 import する回避策と、wbr + word-break: keep-all の実装例をまとめます。
パスキーはドメインに縛られる — 独自ドメイン移行で管理者ログインできなくなる理由と対策(WebAuthn RP ID)
workers.dev などのステージング URL で登録したパスキーは、独自ドメインへ切り替えた瞬間に使えなくなります。WebAuthn の RP ID 束縛という仕様の話と、締め出されたときの復旧経路(メール配送の Slack すげ替え)、切り替え前にやるべき手順をまとめます。
Webhook 署名検証が body パースで壊れる問題と、生リクエストボディの取得(Astro / Cloudflare Workers)
Slack や Stripe の Webhook 署名検証は「生のリクエストボディ」に対する HMAC のため、フレームワークが body を先にパースすると検証が壊れます。原因と、Astro / Cloudflare Workers での生ボディ取得(request.text / clone)方法をまとめます。