Maison >développement back-end >Golang >Comment corriger les erreurs 404 lors de la diffusion de contenu statique avec PathPrefix de Gorilla Mux ?

Comment corriger les erreurs 404 lors de la diffusion de contenu statique avec PathPrefix de Gorilla Mux ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-08 01:18:13346parcourir

How to Fix 404 Errors When Serving Static Content with Gorilla Mux's PathPrefix?

Adressage des erreurs 404 lors de la diffusion de contenu statique avec 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.

Énoncé du problème

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.

Solution utilisant PathPrefix

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn