登录
首页 >  Golang >  Go问答

在Golang中如何正确处理单页面应用的URL?

来源:stackoverflow

时间:2024-03-20 21:18:32 485浏览 收藏

在使用 Go 语言构建单页面应用 (SPA) 时,需要正确处理 URL 以确保前端页面正常加载。当尝试访问带有路径后缀的 URL(如 `localhost:1323/example`)时,可能会遇到路由回 `index.html` 的问题,即使有同名页面(如 `example.html`)存在。

问题内容

我正在尝试使用 echo 嵌入并服务我的前端(带有静态导出的 nextjs)。我目前正在使用:

//go:embed all:frontend/out
var FrontendFS embed.FS

func BuildFrontendFS() http.FileSystem {
    build, err := fs.Sub(FrontendFS, "frontend/out")
    if err != nil {
        log.Fatal(err)
    }
    return http.FS(build)
}

e := echo.New()

e.Use(middleware.StaticWithConfig(middleware.StaticConfig{
    Filesystem: BuildFrontendFS(),
    HTML5:      true,
}))

e.Logger.Fatal(e.Start(":1323"))

它工作得很好,但是当我尝试打开像 localhost:1323/example 这样的 url 时,它会路由回 index.html。问题是有一个名为 example.html 的页面,我希望看到该页面。如果我调用像 localhost:1323/example.html 这样的 url,它就可以工作。

有什么想法可以解决这个问题,以便我可以使用 localhost:1323/example 吗?


正确答案


我看到引用了 ./out 目录,因此看起来您正在导出到静态 html。如果是这种情况,请在 next.config.js 中启用 trailingSlash 设置:

module.exports = {
  trailingSlash: true,
}

导出后./example.html将变为./example/index.html

今天关于《在Golang中如何正确处理单页面应用的URL?》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>