HTTP静态目录不被服务(http static directories aren't be

2019-08-17 17:59发布

我不明白为什么没有被送达我的静态资源。 下面是代码:

func main() {
    http.HandleFunc("/", get_shows)
    http.HandleFunc("/get",  get_show_json)
    http.HandleFunc("/set", set_shows)
    http.Handle("/css/", http.FileServer(http.Dir("./css")))
    http.Handle("/js/", http.FileServer(http.Dir("./js")))
    http.ListenAndServe(":8080", nil)
}

当我运行该程序,导航到访问http://myhost.fake/css/或HTTP://myhost.fake/css/main.css (这些存在于文件系统),我得到一个404错误。 如果我的完整路径的目录替换“./css”也是如此。 同上为JS静态目录。 我的另一个处理程序正常工作。 我是在Linux。 谢谢!

Answer 1:

您的处理程序路径( /css/ )传递到文件服务器处理器加上前缀后的文件。 这意味着,当您访问的http://myhost.fake/css/test.css你的文件服务器正在试图找到该文件./css/css/test.css

在HTTP包提供功能StripPrefix剥去/css/前缀。

这应该这样做:

http.Handle("/css/", http.StripPrefix("/css/", http.FileServer(http.Dir("css"))))


Answer 2:

我现在不能验证,但IIRC: s/"./css"/"css"/ ; s/"./js"/"js"/

编辑:现在,我终于可以检查来源:这是我做过什么,什么对我的作品:

http.Handle("/scripts/", http.FileServer(http.Dir("")))
http.Handle("/images/", http.FileServer(http.Dir("")))

在所有图像./images/*.{gif,png,...}得到适当的服务。 关于脚本,同样的故事。



文章来源: http static directories aren't being served