我是编程的新手。我按照这个(https://golang.org/doc/articles/wiki/)教程。我想在这个具有多个页面和CSS元素的站点之上构建。
在我使用的主要方法中
http.Handle("/css/", http.StripPrefix("/css/", http.FileServer(http.Dir("css"))))
这是我的makeHandler函数。它应该将所有请求定向到正确的处理程序。
func makeHandler( fn func( http.ResponseWriter, *http.Request, string)) http.HandlerFunc{
return func( w http.ResponseWriter, r *http.Request ){
//extract page title from request
//and call the provided handler 'fn'
m := validPath.FindStringSubmatch(r.URL.Path)
fmt.Println(m)
if m == nil{
http.NotFound(w,r)
return
}
fn(w,r,m[2])
}
}
当我打印'm'时,所有请求都以视图为前缀(我有一个viewHandler,然后调用它来渲染模板)。
http.HandleFunc("/view/", makeHandler(viewHandler))
因此,如果我想查看aboutSite页面,则url将具有/ view / aboutSite,然后将其定向到viewHandler。
问题是html模板有CSS链接,链接也以'view'为前缀。如果我在我的html模板中有这行代码
<link rel="stylesheet" href="css/bootstrap.min.css">
makeHandler会收到一个“视图”前缀网址。 /view/css/bootstrap.min.css
我需要添加/更改什么以便渲染CSS元素?
答案 0 :(得分:0)
您需要在href
属性中使用绝对路径(即使用以/
开头的路径),否则路径将被视为相对于当前页面的路径,从而导致您的行为看到。
例如:
<link rel="stylesheet" href="/css/bootstrap.min.css">