Heim >Backend-Entwicklung >Golang >Wie vermeide ich Konflikte bei der Bereitstellung statischer Inhalte und einer Homepage aus dem Stammverzeichnis in Go?
In Go können Sie sowohl statische Inhalte als auch eine Homepage aus dem Stammverzeichnis bereitstellen. Es kommt jedoch zu Konflikten, wenn beide Methoden für die Stamm-URL registriert sind.
Um statischen Inhalt wie Bilder und CSS bereitzustellen, müssen Sie http.Handle verwenden und ein bereitstellen http.Dir. Wenn Sie dies jedoch für die Stamm-URL tun, kommt es zu einem Konflikt mit dem Homepage-Handler.
Um eine Homepage bereitzustellen, verwenden Sie http.HandleFunc und stellen Sie eine Handler-Funktion bereit, die die schreibt Homepage-Inhalt.
Um den Konflikt zu lösen, sollten Sie die Bereitstellung bestimmter Root-Dateien in Betracht ziehen explizit. Sie können beispielsweise sitemap.xml, favicon.ico und robots.txt als einzelne Dateien bereitstellen.
package main import ( "fmt" "net/http" ) func HomeHandler(w http.ResponseWriter, r *http.Request) { fmt.Fprintf(w, "HomeHandler") } func serveSingle(pattern string, filename string) { http.HandleFunc(pattern, func(w http.ResponseWriter, r *http.Request) { http.ServeFile(w, r, filename) }) } func main() { http.HandleFunc("/", HomeHandler) // homepage // Mandatory root-based resources serveSingle("/sitemap.xml", "./sitemap.xml") serveSingle("/favicon.ico", "./favicon.ico") serveSingle("/robots.txt", "./robots.txt") // Normal resources http.Handle("/static", http.FileServer(http.Dir("./static/"))) http.ListenAndServe(":8080", nil) }
Alle anderen statischen Ressourcen verschieben (z. B. CSS, JS) in ein Unterverzeichnis wie /static. Anschließend bedienen Sie dieses Unterverzeichnis normal mit http.Handle und http.Dir.
Das obige ist der detaillierte Inhalt vonWie vermeide ich Konflikte bei der Bereitstellung statischer Inhalte und einer Homepage aus dem Stammverzeichnis in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!