Maison >développement back-end >Golang >Comment corriger les erreurs 404 lors de la diffusion de contenu statique avec PathPrefix de Gorilla Mux ?
Lors de la mise en œuvre du routage d'URL à l'aide du package mux de Gorilla Toolkit, un défi courant se pose lors de la diffusion de contenu statique à partir de sous-répertoires. Dans cet article, nous explorerons une solution à ce problème en utilisant la méthode PathPrefix et comment elle peut résoudre les erreurs 404 rencontrées lors de l'accès aux fichiers statiques.
Considérez le scénario suivant : Vous disposez d'un serveur Web Go avec la structure de fichiers et de répertoires suivante :
... main.go static\ | index.html | js\ | <js files> | css\ | <css files>
Dans votre fichier main.go, vous avez défini un routeur multiplexeur comme suit :
func main() { r := mux.NewRouter() r.Handle("/", http.FileServer(http.Dir("./static/"))) r.HandleFunc("/search/{searchTerm}", Search) r.HandleFunc("/load/{dataId}", Load) http.ListenAndServe(":8100", nil) }
Lorsque vous accédez à http://localhost:8100 dans votre navigateur, index.html est rendu avec succès. Cependant, les tentatives d'accès aux fichiers CSS et JavaScript dans les sous-répertoires entraînent des erreurs 404.
Pour résoudre ce problème, nous utilisons la méthode PathPrefix fournie par le package mux. En utilisant cette méthode, nous pouvons spécifier un préfixe de chemin commun à tous les fichiers statiques, puis attribuer un gestionnaire pour ce préfixe de chemin.
func main() { r := mux.NewRouter() r.HandleFunc("/search/{searchTerm}", Search) r.HandleFunc("/load/{dataId}", Load) r.PathPrefix("/").Handler(http.FileServer(http.Dir("./static/"))) http.ListenAndServe(":8100", r) }
En utilisant PathPrefix("/").Handler, nous disons essentiellement que pour tout chemin commençant par "/", nous devons nous en remettre au gestionnaire FileServer. Cela garantit que tous les fichiers statiques du répertoire static/ sont servis correctement, y compris ceux des sous-répertoires comme css/ et js/.
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!