React刷新浏览器报404?

背景

前端由React构建。

后端使用Envoy作为流量网关,listeners的路由部分配置如下:

route_config:
 name: admin
 virtual_hosts:
 - name: admin
 domains: ["admin.example.com"]
 routes:
 - match:
 prefix: "/"
 route:
 cluster: admin

Envoy将下游请求代理到由Go编写的HTTP服务器,服务器内部路由的处理如下:

func main() {
 fs := http.FileServer(http.Dir("/path/to/build"))
 http.Handle("/", fs)
 if e := http.ListenAndServe(":80", nil); e != nil {
 panic(e)
 }
}

问题

只要带路径,刷新浏览器就报404。

疑惑

我知道是因为React Router的原因,也知道服务器为Nginx或者httpd时的解决方案。

但通过EnvoyGo部署时,Envoyprefix已经将所有路径的请求代理给了Go,而Gohttp.Handle也已经将所有路径的请求都一律返回静态文件,不论客户端实际请求的是什么路径,不应该都是得到静态文件吗?怎么会得到404呢?

想不通,跪求大佬指教,抱拳。

作者:赞原文地址:https://segmentfault.com/q/1010000043836040

%s 个评论

要回复文章请先登录注册