Lors de l'accès à des chemins tels que "/my_frontend_path" directement dans le navigateur, GoLang renvoie une erreur 404 à la place de déléguer le routage au routeur frontend React.
Le principal problème est que lors de l'accès à de tels chemins avant l'initialisation du routeur React, le serveur gère la demande et renvoie l'erreur.
Une Une approche simple « Catch-all » côté serveur peut être mise en œuvre pour rediriger tous les chemins non pris en charge vers le routeur frontal. Cette approche fonctionne en renvoyant la page index.html si le fichier demandé n'existe pas, permettant au routeur React de gérer le routage.
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) }
Dans cette implémentation :
Cette méthode renvoie index.html pour les fichiers qui n'existent pas, ce qui peut entraîner des problèmes avec des fichiers comme "favicon.ico". Dans de tels cas, des vérifications supplémentaires peuvent être ajoutées pour limiter la redirection uniquement à des extensions spécifiques.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!