如果是单个域名,使用没啥好说的一个 http.HandleFunc 来给这个域名注册URL规则就行了。如果是多个域名呢?因为不同的域名就会有不同的规则,所以得分别注册URL规则。当然你也可以分开到另一个go文件中来管理。这里只说同时来管理的情况。
package main
import (
"http"
)
func hf1(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("hello world from host1"))
}
func hf2(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("hello world from host2"))
}
func main() {
sm1 := http.NewServeMux()
sm2 := http.NewServeMux()
sm1.HandleFunc("/", hf1)
sm2.HandleFunc("/", hf2)
http.Handle("www.kejibo1.com/", sm1)
http.Handle("www.kejibo2.com/", sm2)
http.ListenAndServe(":80", nil) //注册到默认的 DefaultServeMux上面,来管理所有域名
}
如果要增加域名规则就分别添加 sm1.HandleFunc(“/”, hf1) 或 sm2.HandleFunc(“/”, hf2) 这样注册方法。
你可能会怀疑注册这样的域名方法,会不会 www.kejibo.com/www.kejibo1.com/ 也会被注册到了 sm1上面呢?通过测试可以发现,并不会。
