Maison >développement back-end >Golang >Comment servir une page d'accueil et des fichiers statiques à partir du répertoire racine dans Go ?
Servir la page d'accueil et le contenu statique à partir de la racine
Dans Go, diffuser du contenu statique à partir du répertoire racine tout en conservant un gestionnaire racine pour la page d'accueil peut être réalisé en suivant les étapes suivantes :
Gérer les fichiers du répertoire racine Explicitement
Créez une fonction, telle que serveSingle, pour servir des fichiers individuels situés dans le répertoire racine. Cette approche convient aux fichiers tels que sitemap.xml, favicon.ico et robots.txt qui sont généralement censés être présents à la racine :
func serveSingle(pattern string, filename string) { http.HandleFunc(pattern, func(w http.ResponseWriter, r *http.Request) { http.ServeFile(w, r, filename) }) }
Enregistrer les gestionnaires de fichiers
Enregistrez la fonction serveSingle pour gérer les demandes de fichiers spécifiques à la racine répertoire :
serveSingle("/sitemap.xml", "./sitemap.xml") serveSingle("/favicon.ico", "./favicon.ico") serveSingle("/robots.txt", "./robots.txt")
Servir le contenu statique à partir d'un sous-répertoire
Utilisez http.FileServer pour diffuser le contenu statique à partir d'un sous-répertoire, tel que "/static/":
http.Handle("/static", http.FileServer(http.Dir("./static/")))
Enregistrer le gestionnaire de la page d'accueil
S'inscrire le gestionnaire racine, tel que HomeHandler, pour gérer les requêtes pour la page d'accueil à "/":
http.HandleFunc("/", HomeHandler)
Exemple de code
La combinaison de ces techniques donne le code suivant :
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 serveSingle("/sitemap.xml", "./sitemap.xml") serveSingle("/favicon.ico", "./favicon.ico") serveSingle("/robots.txt", "./robots.txt") http.Handle("/static", http.FileServer(http.Dir("./static/"))) http.ListenAndServe(":8080", nil) }
En gérant explicitement les fichiers du répertoire racine tout en diffusant du contenu statique à partir d'un sous-répertoire distinct, vous pouvez maintenir à la fois la gestion de la page d'accueil et le contenu statique servir avec un comportement similaire aux serveurs Web comme Apache et Nginx.
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!