首页 > 解决方案 > 使用 golang 模板和大猩猩的文件路径不正确

问题描述

所以我想在http://example.com/posts/1上显示我的数据,模板上还有其他元素,如 css 和图像:

<link rel="stylesheet" type="text/css" href="index.css">
<img src="images/logo.png" alt="Logo">

但是,不是从 http://example.com/index.css 加载 css和从http://example.com/images/logo.png加载图像,而是从http://example.com/posts/加载index.csshttp://example.com/posts/images/logo.png

这是代码:

//...

func postsHandler(w http.ResponseWriter, r *http.Request) {
   //... Get the data from other functions
   t, _ := template.ParseFiles("dist/posts.html")
   err = t.Execute(w, requestPostItem)
    //.., Handle error if any
}

func main() {
    //...
    r := mux.NewRouter()
    r.PathPrefix(`/audioupload/`).Handler(http.StripPrefix("/audioupload/", http.FileServer(http.Dir("./audioupload/"))))
    r.HandleFunc("/posts/{id:[0-9]+}", postsHandler)
    r.PathPrefix("/").Handler(http.FileServer(http.FS(dist.WebUI)))
    //...
}

我在 dist 文件夹中有我所有的 css 和 html,还有static.go

//go:embed *
var WebUI embed.FS

文件夹结构:

audioupload
 - ...
dist
 - index.css
 - posts.html
 - ...
main.go

标签: gogorillamux

解决方案


推荐阅读