Donc, chaque fois que j'essaie d'accéder à des fichiers dans mon sous-répertoire statique, je reçois juste un 404, non trouvé, Accessing Home/d'autre part fonctionne très bien, mais une image que j'appelle à partir du fichier d'origine est tout simplement cassé :(, donc je voudrais savoir ce qu'il faut changer pour que je puisse servir des fichiers et rediriger mon répertoire racine en même tempsFileserver renvoie 404 pour tous les fichiers
ma structure de chemin.
root/
->html
->static
->entry.go
J'ai vu les autres threads ici, ils recommandent tous que je fais r.PathPrefix ("/"). Handler (...), mais cela fait en sorte d'accéder à n'importe quel fichier en dehors des retours statiques NIL, y compris mes fichiers html sont dans un fichier html séparé à la racine de mon projet, en outre, rediriger vers l'un d'entre eux renvoie 404, introuvable.
Voici le code:
package main
import (
"fmt"
"net/http"
"html/template"
"github.com/gorilla/mux"
"os"
)
func IfError(err error, quit bool) {
if err != nil {
fmt.Println(err.Error())
if(quit) {
os.Exit(1);
}
}
}
func NotFound(w http.ResponseWriter, r *http.Request) {
w.WriteHeader(404)
t, _ := template.ParseFiles("html/404")
err := t.Execute(w, nil)
IfError(err, false)
}
func Home(w http.ResponseWriter, r *http.Request) {
t, _ := template.ParseFiles("html/home")
err := t.Execute(w, nil)
IfError(err, false)
}
func RedirectRoot(servefile http.Handler) http.Handler {
return http.HandlerFunc(func (w http.ResponseWriter, r *http.Request) {
if r.URL.Path == "/" {
redirect := r.URL.Host+"/home"
http.Redirect(w, r, redirect, http.StatusSeeOther)
} else {
servefile.ServeHTTP(w, r)
}
})
}
func main() {
r := mux.NewRouter()
ServeFiles := http.StripPrefix("/", http.FileServer(http.Dir("static/")))
r.Handle("/", RedirectRoot(ServeFiles))
r.HandleFunc("/home", Home)
r.NotFoundHandler = http.HandlerFunc(NotFound)
fmt.Printf("Listening ...")
IfError(http.ListenAndServe(":8081", r), true)
}
Merci beaucoup
Mais je veux que mon répertoire racine redirige vers home /, l'accès au site web avec votre imlementation me donnera un 404, Not found, et le favicon.ico ne sera pas chargé non plus – Whiteclaws
Ajouté plus de détails à la réponse, s'il vous plaît avoir un regard. – jeevatkm