直接在瀏覽器中存取「/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中文網其他相關文章!