我刚刚开始进入golang,因为我打算主持至少两个网站,我选择使用Mux来显示不同的路由"过滤"域。每当我尝试访问我的主路线时,它只会给我404错误。 (另外," www"部分缺席的事实是完全正常的。我不打算输入该网站)。
但是如果我将服务器作为文件服务器启动,我可以访问我的文件,因此服务器本身就可以正常工作
func redirect(w http.ResponseWriter, req *http.Request) {
target := "https://" + req.Host + req.URL.Path
http.Redirect(w, req, target,
http.StatusTemporaryRedirect)
}
func main() {
go http.ListenAndServe(":80", http.HandlerFunc(redirect)) // Redirection
// Serveur sécurisé
r := mux.NewRouter()
r.PathPrefix("/static/").Handler(http.StripPrefix("/static/", http.FileServer(http.Dir("/root/go/src/web/static/"))))
s := r.Host("echecderi.me").Subrouter()
s.HandleFunc("/", indexEchec)
http.ListenAndServeTLS(":443", "domain-crt.pem", "domain-key.pem", nil)
}
func indexEchec(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "<h1>Echec de rime</h1> </br> <img src=\"/static/echecderime/echec.gif\">")
}
答案 0 :(得分:2)
我认为您需要将r
作为http.ListenAndServeTLS
的最后一个参数。
答案 1 :(得分:0)
您还可以使用 http.server 实例
//create server instance
server := http.Server{
Addr: ":443",
TLSConfig: tlsConfig(cert),
}
rtr := mux.NewRouter()
rtr.HandleFunc("/profile", HandlerProfile).Methods("GET")
//rtr.HandleFunc( other routes...
//pass mux handler to server
server.Handler = rtr
server.ListenAndServeTLS("", "")