一尘不染

使用 Gorilla 工具包提供带有根 URL 的静态内容

go

我正在尝试使用 Gorilla 工具包的mux在 Go Web 服务器中路由 URL,我有以下 Go 代码:

func main() {
    r := mux.NewRouter()
    r.Handle("/", http.FileServer(http.Dir("./static/")))
    r.HandleFunc("/search/{searchTerm}", Search)
    r.HandleFunc("/load/{dataId}", Load)
    http.Handle("/", r)
    http.ListenAndServe(":8100", nil)
}

目录结构为:

...
main.go
static\
  | index.html
  | js\
     | <js files>
  | css\
     | <css files>

Javascript 和 CSS 文件的引用index.html如下:

...
<link rel="stylesheet" href="css/redmond/jquery-ui.min.css"/>
<script src="js/jquery.min.js"></script>
...

当我http://localhost:8100在 Web 浏览器中访问时,index.html内容已成功传送,但是,所有jscssURL 都返回 404。

如何让程序从static子目录中提供文件?


阅读 177

收藏
2021-12-26

共1个答案

一尘不染

我想你可能正在寻找PathPrefix

func main() {
    r := mux.NewRouter()
    r.HandleFunc("/search/{searchTerm}", Search)
    r.HandleFunc("/load/{dataId}", Load)
    r.PathPrefix("/").Handler(http.FileServer(http.Dir("./static/")))
    http.ListenAndServe(":8100", r)
}
2021-12-26