Golang路线无法正常工作

时间:2017-03-30 18:59:29

标签: web go

我刚刚开始进入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\">")
}

2 个答案:

答案 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("", "")