作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
问题在于为域以及子域 x、y、z(或在本示例中为 blog、admin 和 design)提供服务。运行以下命令并请求 blog.localhost:8080/firefox 时找不到服务器 www.blog.localhost:8080。
package main
import (
"html/template"
"log"
"net/http"
)
var tpl *template.Template
const (
domain = "localhost"
blogDomain = "blog." + domain
adminDomain = "admin." + domain
designDomain = "design." + domain
)
func init() {
tpl = template.Must(template.ParseGlob("templates/*.gohtml"))
}
func main() {
// Default Handlers
http.HandleFunc("/", index)
// Blog Handlers
http.HandleFunc(blogDomain+"/", blogIndex)
// Admin Handlers
http.HandleFunc(adminDomain+"/", adminIndex)
// Design Handlers
http.HandleFunc(designDomain+"/", designIndex)
http.Handle("/static/", http.StripPrefix("/static", http.FileServer(http.Dir("static"))))
http.ListenAndServe(":8080", nil)
}
func index(res http.ResponseWriter, req *http.Request) {
err := tpl.ExecuteTemplate(res, "index.gohtml", nil)
if err != nil {
log.Fatalln("template didn't execute: ", err)
}
}
// Blog Handlers
func blogIndex(res http.ResponseWriter, req *http.Request) {
err := tpl.ExecuteTemplate(res, "index.gohtml", nil)
if err != nil {
log.Fatalln("template didn't execute: ", err)
}
}
// Admin Handlers
func adminIndex(res http.ResponseWriter, req *http.Request) {
err := tpl.ExecuteTemplate(res, "index.gohtml", nil)
if err != nil {
log.Fatalln("template didn't execute: ", err)
}
}
// Design Handlers
func designIndex(res http.ResponseWriter, req *http.Request) {
err := tpl.ExecuteTemplate(res, "index.gohtml", nil)
if err != nil {
log.Fatalln("template didn't execute: ", err)
}
}
是否可以使用标准库为子域提供服务?如果是怎么办?
编辑:请求 localhost:8080/工作正常
EDIT2:我编辑了/etc/hosts 以包含子域:
127.0.0.1 blog.localhost.com
127.0.0.1 admin.localhost.com
127.0.0.1 design.localhost.com
对它们执行 ping 操作正常,但 firefox 无法连接到它们。
最佳答案
给定第二次编辑中的主机文件,您可以将 firefox 指向例如 blog.localhost.com:8080
但是您还必须处理该域模式,即 http.HandleFunc(blogDomain+":8080/", blogIndex)
.
如果这不是您想要的,您可以改为监听端口 80
,即 http.ListenAndServe(":80", nil)
,您可能需要运行您的应用在 sudo 中以便它有权使用该端口,那么你的 blog.localhost.com
应该可以工作。
关于戈朗 : How to handle and serve subdomains?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42795286/
我是一名优秀的程序员,十分优秀!