golang http.FileServer 遇到的坑
这个函数的第二个参数居然不是地址对应的本地目录,而是站点的根目录.
例如经典示例
http.handle("/js", http.FileServer(http.Dir("js"))
这样访问 "http://127.0.0.1:8888/js/a.js" 时并不是直接访问本地的 "js/a.js" 而是 "js/js/a.js" !!!
所以我们看到的官方示例实际上第二个参数指定的是站点的根目录,它们通常指的是同一个本地目录!!!
即
http.Handle("/css/", http.FileServer(http.Dir("template")));
http.Handle("/js/", http.FileServer(http.Dir("template")));
--------------------------------------------------
那么如果我就是要访问指定的目录呢? 那得加上一个奇特的函数
http.StripPrefix
所以最后的结果应该是这样:
http.Handle("/js/", http.StripPrefix("/js/", http.FileServer(http.Dir("js"))))