問題
r.StaticFile("/", "./dist")
などの書き方だと、ルートページから遷移する場合には動作するが、URL直打ちのように直接アクセスすると404が返ってくる
結論
file path + request uriで対応できる
r.NoRoute(func(c *gin.Context) {
_, file := path.Split(c.Request.RequestURI)
ext := filepath.Ext(file)
//ディレクトリアクセス(ファイル名がない)かパスクエリ(拡張子がない)
if file == "" || ext == "" {
c.File("./dist" + "/index.html")
} else {
c.File("./dist" + c.Request.RequestURI)
}
})
react routerのような静的fileをserveするときなら全部これで対応できるかなと思います。
たとえsolidjsやvueなども可能。
実際主もsolidjs + vite + vite-plugin-pagesの環境でテストしているいけたので、多分この方法で可能かと思います。
参考記事