2017-09-22 108 views
1

我是一個去編程的新手。我遵循這個(https://golang.org/doc/articles/wiki/)教程。我想在這個擁有多個頁面和CSS元素的網站之上構建。Go並沒有爲所有的HTML頁面渲染CSS元素

在main方法我用

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',所有的請求是由視圖前綴(I具有的ViewHandler隨後被調用,以呈現所述模板)。

 http.HandleFunc("/view/", makeHandler(viewHandler)) 

所以,如果我想查看aboutSite頁面,網址會有/視圖/ aboutSite其將被引導到的ViewHandler。

問題是,html模板有CSS鏈接,鏈接前綴也是'view'。所以,如果我在我的html模板中有這行代碼

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

makeHandler會收到一個'查看'前綴URL。 /view/css/bootstrap.min.css

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

+0

<鏈路的rel = 「樣式表的」 href = 「/ CSS/bootstrap.min.css」>否則你在HREF 「附加」 的URL現用URL – Tiega

+0

甚至壽你是新的,想要學習,我明白了。仍然可以看看echo http服務器。如果你真的想做一個網站,它會爲你節省很多編碼。 :) – Tiega

+0

謝謝你的工作!我試圖理解回聲以便使用它 –

回答

0

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

因此,例如:

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