Q. Remix Cloudflareで404 not matchエラーが出る
Remix + Cloudflareの環境で、トップページのOutlet内部のコンテンツが表示されず、他のページでは404 Not matchエラーが発生するようになったと相談を受けたので、その原因と解決策についてまとめた。
状況
Remix + Cloudflareの環境で、あるタイミングから、トップページのOutlet内部のコンテンツが表示されず、他のページでは404 Not matchエラーが発生するようになったと相談を受けた。
原因
publicファイルにfavicon.ico以外のファイルを追加すると、Not matchエラーが発生する。
解決策
このIssueに紐づいた
No match URL
error occurs. (CloudFlare Pages)
このPRの内容で解決した。
https://github.com/remix-run/remix/pull/8722/files
次の2つのファイルをpublicディレクトリに配置する。
/public/_headers
/favicon.ico
Cache-Control: public, max-age=3600, s-maxage=3600
/assets/*
Cache-Control: public, max-age=31536000, immutable
/public/_routes.json
{
"version": 1,
"include": ["/*"],
"exclude": ["/favicon.ico", "/assets/*"]
}
余談
このPRは2024年2月からマージされておらず、cloudflareの提供しているcrearteコマンドも内部的にはremixの提供しているtemplateを利用しているため、2024年4月現在ではremix + cloudflareの環境のほとんどがこの問題を抱えている可能性がある。