我试图用 go 来提供一个反应路由器,我已经做到了,但是我遇到了麻烦,我认为我所做的方式不正确,或者不完整。我正在使用 Mux。我遇到的问题是,当我<Link>在应用程序中推送 时,它会正确更改视图,但是当我尝试直接从浏览器更改它或尝试重新加载页面时,我收到 404 错误我尝试了不同的方法,我实际上是这样做的:func main() { var dir = "./static" router := mux.NewRouter() fs := http.FileServer(http.Dir(dir)) router.PathPrefix("/").Handler(fs) fmt.Println("Server running in port :8000") log.Fatal(http.ListenAndServe(":8000", router))}我希望服务器在所有请求中提供相同的目录,例如“/”、“/example”、“/example2”等。
1 回答
jeck猫
TA贡献1909条经验 获得超7个赞
我的猜测是您有一些静态内容,并且您希望将其他所有内容转发到index.html. 我遇到了类似的问题,我的解决方案是在所有react-router url 前面加上一个常量前缀,这样我就可以在后端检测到它并转发它。我的代码看起来像这样:
router := mux.NewRouter()
router.PathPrefix("/public/").Handler(http.StripPrefix("/public/", http.FileServer(http.Dir("public"))))
router.HandleFunc("/", handleIndex).Methods("GET")
router.HandleFunc("/h/{param:.*}", handleIndex).Methods("GET")
在我的反应路由器中,我刚刚将所有路线从 更改{uri}为/h/{uri}
如果你真的想将所有内容转发到反应代码而不进行任何后端检查 404 或任何其他内容,你可以这样做:
router := mux.NewRouter()
router.NotFoundHandler = ... // Write a function to serve the index file here
fs := http.FileServer(http.Dir(dir))
router.PathPrefix("/").Handler(fs)
- 1 回答
- 0 关注
- 118 浏览
添加回答
举报
0/150
提交
取消