Bei der Implementierung von URL-Routing mithilfe des Mux-Pakets des Gorilla Toolkits tritt eine häufige Herausforderung auf, wenn statische Inhalte aus Unterverzeichnissen bereitgestellt werden. In diesem Artikel untersuchen wir eine Lösung für dieses Problem durch die Verwendung der PathPrefix-Methode und wie sie die 404-Fehler beheben kann, die beim Zugriff auf statische Dateien auftreten.
Stellen Sie sich das folgende Szenario vor : Sie haben einen Go-Webserver mit der folgenden Datei- und Verzeichnisstruktur:
... main.go static\ | index.html | js\ | <js files> | css\ | <css files>
In Ihrer main.go-Datei haben Sie einen Mux-Router definiert als folgt:
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) }
Wenn Sie in Ihrem Browser auf http://localhost:8100 zugreifen, wird index.html erfolgreich gerendert. Versuche, auf CSS- und JavaScript-Dateien in Unterverzeichnissen zuzugreifen, führen jedoch zu 404-Fehlern.
Um dieses Problem zu beheben, verwenden wir die vom Mux-Paket bereitgestellte PathPrefix-Methode. Mithilfe dieser Methode können wir ein Pfadpräfix angeben, das allen statischen Dateien gemeinsam ist, und dann einen Handler für dieses Pfadpräfix zuweisen.
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) }
Durch die Verwendung von PathPrefix("/").Handler, Wir sagen im Wesentlichen, dass wir uns für jeden Pfad, der mit „/“ beginnt, an den FileServer-Handler wenden sollten. Dadurch wird sichergestellt, dass alle statischen Dateien im Verzeichnis static/ korrekt bereitgestellt werden, einschließlich derjenigen in Unterverzeichnissen wie css/ und js/.
Das obige ist der detaillierte Inhalt vonWie behebe ich 404-Fehler bei der Bereitstellung statischer Inhalte mit PathPrefix von Gorilla Mux?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!