Go net/http呈现根路由,即使我转到的路由不';不存在
我有以下路线:Go net/http呈现根路由,即使我转到的路由不';不存在,go,Go,我有以下路线: http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { renderAndExecuteTemplate(w, r, "page/index.tmpl", nil) }) http.HandleFunc("/route1", func(w http.ResponseWriter, r *http.Request) { renderAndExecuteTemplate(w,
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
renderAndExecuteTemplate(w, r, "page/index.tmpl", nil)
})
http.HandleFunc("/route1", func(w http.ResponseWriter, r *http.Request) {
renderAndExecuteTemplate(w, r, "page/route1.tmpl", nil)
})
http.HandleFunc("/route2", func(w http.ResponseWriter, r *http.Request) {
renderAndExecuteTemplate(w, r, "page/route2.tmpl", nil)
})
它起作用了
但是,当我转到一个不存在的路由:“localhost/fdsafds”时,它仍然呈现“index”页面
为什么??如何防止这种情况发生?来自:
请注意,由于以斜杠结尾的模式命名有根子树,
模式“/”匹配所有未被其他注册路径匹配的路径
模式,而不仅仅是路径为=“/”的URL
防止这种情况的一种方法是构建一个查看请求的处理程序:
http.HandleFunc("/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request){
if r.URL.Path != "/" {
w.WriteHeader(http.StatusNotFound)
return
}
renderAndExecuteTemplate(w, r, "page/index.tmpl", nil)
})
从:
请注意,由于以斜杠结尾的模式命名有根子树,
模式“/”匹配所有未被其他注册路径匹配的路径
模式,而不仅仅是路径为=“/”的URL
防止这种情况的一种方法是构建一个查看请求的处理程序:
http.HandleFunc("/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request){
if r.URL.Path != "/" {
w.WriteHeader(http.StatusNotFound)
return
}
renderAndExecuteTemplate(w, r, "page/index.tmpl", nil)
})