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で返ってきたのでいい感じ。
一件落着。