Servir la page d'accueil de contenu statique et de la racine

Dans Golang, comment puis-je servir du contenu statique de la racine du répertoire tout en ayant un répertoire racine du gestionnaire de service pour la page d'accueil.

Utiliser les éléments suivants serveur web simple comme un exemple:

package main

import (
    "fmt"
    "net/http"
)

func main() {
    http.HandleFunc("/", HomeHandler) //homepage
    http.ListenAndServe(":8080", nil)
}

func HomeHandler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "HomeHandler")
}

Si je ne

http.Handle("/", http.FileServer(http.Dir("./")))

- Je recevoir une panique en disant que j'ai deux enregistrements pour "/". Chaque Golang exemple que j'ai trouvé sur l'internet suggère de servir leur contenu statique de répertoires différents, mais cela n'aide pas beaucoup pour des choses comme sitemap.xml, favicon.ico, robots.txt et d'autres fichiers qui sont par la pratique ou obligatoire de toujours être servis à partir de la racine.

Le comportement que je cherche est le comportement qui est trouvé dans la plupart des serveurs web, comme Apache, Nginx, IIS ou, où il parcourt vos règles, et si aucune règle n'est trouvé, il cherche un fichier réel, et si aucun fichier n'est trouvé une erreur 404. Ma conjecture est que, au lieu d'écrire un http.HandlerFunc, j'ai besoin d'écrire un http.Handler qui vérifie si je suis le référencement d'un fichier avec une extension, et si oui, vérifie d'existence du fichier et sert le fichier, sinon il d'une erreur 404 ou sert de la page d'accueil est la demande était pour "/". Malheureusement, je ne suis pas certain de comment même de commencer une telle tâche.

Partie de moi me dit que je suis massivement sur-compliquant la situation qui me fait penser que j'ai raté quelque chose? Des conseils seraient appréciés.

  • Un autre Exemple pour servir robots.txt, favicon.ico, ou d'autres à partir de la racine; alors qu'en réalité existant en dehors de la racine, noypi-linux.blogspot.com/2014/07/...
InformationsquelleAutor Nucleon | 2012-12-29