直接在浏览器中访问“/my_frontend_path”等路径时,GoLang 会返回 404 错误将路由委托给前端 React router.
首要问题是在React router初始化之前访问此类路径时,服务器处理请求并返回错误。
可以实施简单的服务器端“包罗万象”方法,将所有不受支持的路径重定向到前端路由器。如果请求的文件不存在,此方法的工作原理是返回index.html页面,从而允许React路由器处理路由。
const FSPATH = "./build/" func main() { fs := http.FileServer(http.Dir(FSPATH)) http.HandleFunc("/my_api", func(w http.ResponseWriter, _ *http.Request) { w.Write([]byte("API CALL")) }) http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { // If requested file exists, return it; otherwise, return index.html if r.URL.Path != "/" { fullPath := FSPATH + strings.TrimPrefix(path.Clean(r.URL.Path), "/") _, err := os.Stat(fullPath) if err != nil { if !os.IsNotExist(err) { panic(err) } // Requested file does not exist, return index.html r.URL.Path = "/" } } fs.ServeHTTP(w, r) }) http.ListenAndServe(":8090", nil) }
在此实现中:
此方法会为不存在的文件返回index.html,这可能会导致“favicon.ico”等文件出现问题。在这种情况下,可以添加额外的检查以将重定向限制为仅特定扩展名。
以上是如何在 GoLang 中重定向前端路由以避免 404 错误?的详细内容。更多信息请关注PHP中文网其他相关文章!