我已经建立了一个简单的 Go 静态文件服务器http.FileServer
。如果我有一个类似的目录结构public > about > index.html
,服务器将正确解析/about
为about > index.html
,但它会添加一个尾部斜杠,因此 url/about/
变为
有没有一种简单的方法可以在使用时删除这些斜杠http.FileServer
?最终,它可以以任何一种方式工作——如果可能的话,不使用尾部斜杠主要是个人喜好。
当您注册/about/
路由时,会添加一个隐式路由/about
(将客户端重定向到/about/
)。
要解决此问题,您可以注册两个显式路由:
/about
为您服务index.html
/about/
用于http.FileServer
处理页面的任何 HTML 资产像这样:
// what you had before
h.Handle("/about/",
http.StripPrefix(
"/about/",
http.FileServer(http.Dir("/tmp/about-files")),
),
)
// prevents implicit redirect to `/about/`
h.HandleFunc("/about",
func(w http.ResponseWriter, r *http.Request) {
http.ServeFile(w, r, "index.html") // serves a single file from this route
},
)