前言
在构建现代 Web 应用时,Vue.js 等流行的前端框架为我们提供了构建单页应用(SPA)的能力。
这些 SPA 应用通常依赖于前端路由来实现页面的无缝切换。
前端路由主要有两种模式:Hash 模式和 History 模式。
Hash 模式的 URL 格式如 https://example.com/admin#/abc/abc
History 模式的 URL 格式则为 https://example.com/admin/abc/abc。
尽管 Hash 模式简单易用,但 History 模式提供了更清晰的 URL 结构,更符合 SEO 优化和用户体验的需求。
然而,当 SPA 应用与 Golang 后端服务结合时,我们可能会遇到一个问题:SPA单页应用的前端路由如果使用的是 History模式 ,在浏览器端刷新页面后会报 404,这个的原因是因为SPA应用的路由只是注册在前端的项目的,当浏览器端刷新页面了,请求被发到了服务端来了,然后服务端没有这个页面,所以返回的是404页面。
那么常见的解决方法就是只能在前端的SPA应用中把路由模式改成 Hash 模式。
解决方法
这个问题如何解决呢?解决方法还是很多的,可以从服务器程序层解决,也可以从Nginx等反向代理程序端解决。
这里我们就是要在 Golang 端解决这个问题,在 Golang 端来解决这个前端路由的 url 重写的,把SPA的路由 url 全部重新回来入口的 index.html 文件即可.
这里我使用的是 go-gin 框架,既然前端是路由的问题,那么同理的我们要兼容也是在路由层解决。
假设我们的接口的前缀是 /api/v1/xxxx ,前端管理入口的uri前缀是:/admin。
那么在 Go-Gin 框架 中有一个 NoRoute 方法,假设我们的后台入口地址是:https://example.com/admin
r := gin.New()
//后台的入口
r.GET("/admin", func(ctx *gin

本文介绍了在 Golang 后端服务中处理 Vue.js 单页应用使用 History 模式路由时遇到的 404 问题。当浏览器刷新页面,请求到达服务端时,Golang 可通过在路由层或中间件层重定向所有前端路由到 index.html,以解决 404 错误。文章以 go-gin 框架为例,展示了具体的解决方案,并讨论了其他框架和服务器配置的处理方法。
最低0.47元/天 解锁文章
2015

被折叠的 条评论
为什么被折叠?



