簡體   English   中英

Go不會為所有HTML頁面呈現CSS元素

[英]Go is not rendering CSS elements for all HTML pages

我是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'時,所有請求都以view為前綴(我有一個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”為前綴的URL。 /view/css/bootstrap.min.css

我需要添加/更改什么以便呈現CSS元素?

您需要在href屬性中使用絕對路徑(即,使用以/開頭的路徑),否則該路徑將被視為相對於當前頁面的相對路徑,從而導致您看到的行為。

因此,例如:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM