我仅在/
端点上运行服务器,并且它的处理程序解析请求URL路径以确定该做什么。它处理原始/
路径以及其他任何路径的默认情况。除此之外,我想提供一个静态CSS文件,但路径永远不匹配“ css / style.css”。
我的模板还有其他href链接,例如/help
或/user
,它们都可以正常工作。如果添加打印语句以打印path
,则会看到正确的输出。但是在我要链接到CSS的index.html
模板中,该路径始终是/
路径。
我可以在浏览器中看到网络活动,但不确定如何解决。我看到来自localhost:8080/css/style.css
的请求,但是从响应代码中,该请求由我的默认情况处理。我从``localhost:8080 /''看到另一个请求,该请求返回一个样式表,发起者是style.css,这很奇怪。我不了解这项活动。
http.HandleFunc("/", svr.Handler)
func (s *Server) Handler(w http.ResponseWriter, r *http.Request) {
path := strings.TrimPrefix(r.URL.Path, "/")
switch path {
case "", "/":
//handle homepage, process data
err := s.template.ExecuteTemplate(w, "index.html", data)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
case "css/style.css":
//serve CSS file
http.ServeFile(w, r, "../templates/css/style.css")
default:
//handle other, process data
err := s.template.ExecuteTemplate(w, "index.html", data)
if err != nil {
http.Error(w, err.Error(), http.StatusInternalServerError)
return
}
}
}
在我的index.html
模板中:
<link rel="stylesheet" type="text/css" href="css/style.css">