Go不会为所有HTML页面呈现CSS元素

时间:2017-09-22 19:39:40

标签: html css go

我是编程的新手。我按照这个(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元素?

1 个答案:

答案 0 :(得分:0)

您需要在href属性中使用绝对路径(即使用以/开头的路径),否则路径将被视为相对于当前页面的路径,从而导致您的行为看到。

例如:

<link rel="stylesheet" href="/css/bootstrap.min.css">