2013-08-14 24 views
6

Tôi đang sử dụng gói "html/template" của golang để phân phát nội dung trên nhiều trang bằng cách sử dụng cùng một _base.html làm khung. Tôi hợp nhất nhiều tệp html (_base.html và tệp nội dung) thành một tệp.Mẫu Golang phục vụ css ở các cấp thư mục khác nhau

func main() { 
http.HandleFunc("/", indexHandler) 
http.HandleFunc("/blog/", blogHandler) 
http.Handle("/css/", http.StripPrefix("/css/", http.FileServer(http.Dir("http/css")))) 
http.ListenAndServe(":1337", nil) 
} 

func indexHandler(w http.ResponseWriter, r *http.Request) { 
index := template.Must(template.ParseFiles(
    "http/html/_base.html", 
    "http/html/index.html", 
)) 
index.Execute(w, nil) 
} 

func blogHandler(w http.ResponseWriter, r *http.Request) { 
blog := template.Must(template.ParseFiles(
    "http/html/_base.html", 
    "http/html/blog.html", 
)) 
blog.Execute(w, nil) 
} 

Làm như vậy trên thư mục gốc của máy chủ web của tôi css của tôi làm cho tốt, bởi vì html link thẻ để .css của tôi tại các điểm _base.html vào thư mục đúng cách sử dụng:

<link href="css/style.css" rel="stylesheet"> 

tuy nhiên khi Tôi điều hướng từ/đến/blog/css của tôi đã xuống cấp (hoặc tôi đã lên cấp, tuy nhiên bạn muốn xem nó) và vì vậy css href đột nhiên trỏ đến /blog/css/style.css và do đó nó sẽ không hiển thị.

Điều này có thể dễ dàng khắc phục được mức độ css trong mọi tệp nội dung tôi hợp nhất với _base.html, tuy nhiên tôi cảm thấy có một cách khác, rõ ràng hơn, khác biệt. Có hoặc là sự lừa dối của tôi trong trường hợp này?

Trả lời

5

Không thử nghiệm nó, vì vậy tôi không thực sự chắc chắn, nhưng những gì về việc thay đổi

<link href="css/style.css" rel="stylesheet"> 

để

<link href="/css/style.css" rel="stylesheet"> 

?

+0

Darn, tôi là một n00b và bạn rất hữu ích. Đáng lẽ phải biết, nhưng quên mất. Cảm ơn bạn rất nhiều – Dani

Các vấn đề liên quan