如何使用Chi路由服务静态文件夹?解决访问404错误
解决Go Chi路由静态资源404问题
你的代码问题出在http.StripPrefix的参数使用错误,当前你指定去掉/public/前缀,但实际请求的URL前缀是/api/static/,导致FileServer无法找到对应文件。
修正后的代码如下:
package main import ( "log" "net/http" "github.com/go-chi/chi/v5" ) func main() { r := chi.NewRouter() // 修正StripPrefix的参数,去掉请求URL中的/api/static/前缀 r.Handle("/api/static/*", http.StripPrefix("/api/static/", http.FileServer(http.Dir("./public")))) if err := http.ListenAndServe(":80", r); err != nil { log.Fatal(err) } }
逻辑说明:
当你请求http://localhost/api/static/css/styles.css时:
http.StripPrefix("/api/static/", ...)会将URL中的/api/static/部分移除,得到/css/styles.csshttp.FileServer(http.Dir("./public"))会在public目录下查找css/styles.css文件,正好匹配你的文件夹结构
这样就能正常访问静态资源了。
内容的提问来源于stack exchange,提问作者otaxhu
相关产品推荐
相关产品推荐

