我尝试使用Golang提供静态文件。
显示目录内容,但找不到目录中的文件。
projectdir/
|- main.go
|- static/
|- main.css
|- templates
|- index.tmpl
main.go
func serv() {
r := mux.NewRouter()
r.HandleFunc("/", HomeHandler)
r.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("./static"))))
srv := &http.Server{
Handler: r,
Addr: "127.0.0.1:8666",
WriteTimeout: 15 * time.Second,
ReadTimeout: 15 * time.Second,
}
如果我启动程序并将浏览器指向127.0.0.1:8666/static/,则列出目录 ./ static 的内容,即 main.css
如果我单击文件 main.css ,则服务器响应为404。
我想念什么?
提前致谢!
答案 0 :(得分:2)
Gorilla路由器与Go的不同之处在于,Gorilla只会匹配给定的确切URL,而不仅仅是URL前缀。 Gorilla documentation中对此进行了详细说明,其中介绍了PathPrefix
如何用于提供文件:
r.PathPrefix("/static/").
Handler(http.StripPrefix("/static/", http.FileServer(http.Dir("./static"))))