Maison > développement back-end > Golang > Comment éviter les conflits lors de la diffusion de contenu statique et d'une page d'accueil à partir du répertoire racine dans Go ?

Comment éviter les conflits lors de la diffusion de contenu statique et d'une page d'accueil à partir du répertoire racine dans Go ?

Linda Hamilton
Libérer: 2024-12-20 11:47:09
original
516 Les gens l'ont consulté

How to Avoid Conflicts When Serving Static Content and a Homepage from the Root Directory in Go?

Servir une page d'accueil et du contenu statique à partir de la racine

Dans Go, vous pouvez diffuser à la fois du contenu statique et une page d'accueil à partir du répertoire racine. Cependant, des conflits surviennent lorsque les deux méthodes sont enregistrées pour l'URL racine.

Servir du contenu statique

Pour diffuser du contenu statique, tel que des images et du CSS, vous devez utiliser http.Handle et fournir un http.Dir. Cependant, si vous faites cela pour l'URL racine, cela entrera en conflit avec le gestionnaire de page d'accueil.

Servir la page d'accueil

Pour servir une page d'accueil, utilisez http.HandleFunc et fournissez une fonction de gestionnaire qui écrit le contenu de la page d'accueil.

Solution proposée : service de fichiers explicite

Pour résoudre le conflit, envisagez de servir une racine spécifique fichiers explicitement. Par exemple, vous pouvez diffuser sitemap.xml, favicon.ico et robots.txt en tant que fichiers individuels.

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)
}
Copier après la connexion

Déplacer les autres ressources

Déplacer toutes les autres ressources statiques (par exemple, CSS, JS) dans un sous-répertoire tel que /static. Ensuite, servez ce sous-répertoire normalement en utilisant http.Handle et http.Dir.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal