在我的根句柄(“/”)或客户端句柄(“/ clients”)中,静态文件是正确可用的,并且在chrome上查看网络选项卡,我看到服务器请求如下:
localhost:8080/static/file.example
但如果我在辅助句柄(“/ Clients / route”)上,请不要正常工作,我看到了:
localhost:8080/clients/static/file.example
StripPrefix不会从请求中删除“客户端”。
func main() {
http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("/static"))))
http.HandleFunc("/", index)
http.HandleFunc("/clients", controllers.MostrarClientes)
http.HandleFunc("/clientes/route", controllers.MainIndex)
http.ListenAndServe(":8080", nil)
-
<link rel="stylesheet" href="static/leaflet/leaflet.css" />
-
文件树:
答案 0 :(得分:3)
这不是处理程序的问题,而是HTML链接的问题。
<link rel="stylesheet" href="static/leaflet/leaflet.css" />
与当前网址相关。
也就是说,static/leaflet/leaflet.css
将附加到当前网址 - 当您在主页上时,这不是问题,因为它会转换为/static/leaflet/leaflet.css
,但当您在客户页面上时它变成了/clients/static/leaflet/leaflet.css
。
简单的解决方法就是将/
添加到href
:
<link rel="stylesheet" href="/static/leaflet/leaflet.css" />
这会使网址成为绝对网址,并且不会访问您网站的其他网页。