我不能让大猩猩多功能工作..
请求http://www.localhost:9000
时,网络服务器404 page not found
但这有效http://localhost:9000/
并打印Hello world
package main
import (
"net/http"
"fmt"
"log"
"github.com/gorilla/mux"
)
func Handler(w http.ResponseWriter, r *http.Request){
fmt.Fprint(w, "Hello world")
}
func main(){
r := mux.NewRouter()
r.Host("www.localhost")
r.HandleFunc("/", Handler)
err := http.ListenAndServe(":9000", r)
if err != nil {
log.Fatal("ListenAndServe error: ", err)
}
}
答案 0 :(得分:2)
您希望能够同时支持localhost和www.localhost
package main
import (
"fmt"
"log"
"net/http"
"github.com/gorilla/mux"
)
func Handler(w http.ResponseWriter, r *http.Request) {
fmt.Fprint(w, "Hello world")
}
func main() {
r := mux.NewRouter()
r.Host("www.localhost").Path("/").HandlerFunc(Handler)
r.HandleFunc("/", Handler)
err := http.ListenAndServe(":9000", r)
if err != nil {
log.Fatal("ListenAndServe error: ", err)
}
}
如果仔细阅读文档,您会注意到r.Host()只是另一种模式匹配功能。它没有为该路由器设置任何全局规则。
如果您想要继承该规则,则需要使用子路由器:
subrouter := r.Host("www.localhost").Subrouter()
然后你使用" subrouter"取代" r"