tips chips

日々の作業で出てきた技術メモの切れ端を置いておくページ

Cloudflare Pagesで存在しないファイルにアクセスしたら404を出すには

404を出すための設定がなかったので調べてみた。

いっつもVercelじゃ面白くないのでCloudflare Pagesを使ってみたりしていました。

ビルドするとindex.htmlだけが吐き出されるような静的なページをデプロイしていたのですが、どのパスにアクセスしてもindex.htmlの結果が返ってくるような挙動をしており、(純粋なSPAをデプロイする時の挙動)この挙動を解除しようにも設定画面にそのような項目はなくどうしたものか?と思っていたら、ちゃんとドキュメントに記載がありました。

Serving Pages · Cloudflare Pages docs
Cloudflare Pages includes a number of defaults for serving your Pages sites. This page details some of those decisions, so you can understand how Pages works, and how you might want to override some of the default behaviors.
https://developers.cloudflare.com/pages/platform/serving-pages/

要約すると

  • アクセスしたパスに一番近い 404.html という名前のファイルを404のレスポンスとして返す
    • /blog/404.html/404.htmlがあるとき /blog/存在しないパスへアクセスすると前者の404ページが返る、というような感じ。
  • トップレベルに404.htmlがないときはSPA用の振る舞いになる
    • 今回のように存在しないパスにアクセスしても /と同じ内容を返す

ということのようです。

404.htmlを配置してデプロイ後に存在しないパスにアクセスしたら、内容がステータスコード404で返ってきたのでいい感じ。

一件落着。