在辅助路由中提供静态文件(“/ route / secondary / route”)Golang

时间:2018-02-13 02:37:08

标签: go

在我的根句柄(“/”)或客户端句柄(“/ 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" />

-

文件树:

tree

1 个答案:

答案 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" />

这会使网址成为绝对网址,并且不会访问您网站的其他网页。