2 回答
TA贡献1802条经验 获得超5个赞
在您的 html 中,当您指定srccss 和 js的属性时,您拥有src="assets/js/libs.js". 这使得这些文件相对于当前路径被请求。所以请求转到http://localhost:8000/static/assets/js/libs.js.
由于它具有/static前缀,它将由您的/static处理程序处理,因此提供 html 文件。
要使其转到/assets处理程序,请指定src带有/前缀的 。
<script type="text/javascript" src="/assets/js/libs.js"></script>
现在服务器将在../../app_assets/assets/js/libs.js.
如果你想要它../../app_assets/js/libs.js,你可以使用StripPrefixassets从服务器中的 url 中取出部分。
fs := http.StripPrefix("/assets/", http.FileServer(http.Dir("../../app_assets/")))
http.Handle("/assets/", fs)
TA贡献1862条经验 获得超6个赞
所以,我知道这是一个有点混乱,但你想改变fs := http.FileServer(http.Dir("../../assets/"))是fs := http.FileServer(http.Dir("../.."))
原因是请求中已经指定了“assets”的路径,因此您拥有它,它实际上指向 ../../assets/assets/*
希望有帮助!
哦,只是为了防止另一个错误, Handle() 函数应该在路径中写一个斜杠。我差点忘了抓住那个。
编辑
要根据您的其他需要(使用某种重定向)调整我的答案,您必须使用http.StripPrefix处理程序https://golang.org/pkg/net/http/#StripPrefix
对于您的用例,您将使用以下代码准备服务器:
fs := http.FileServer(http.Dir("../../app_assets"))
http.Handle("/assets/", http.StripPrefix("/assets/", fs))
这使您可以为文件系统服务进行 url 重写。
- 2 回答
- 0 关注
- 176 浏览
添加回答
举报