Serving Subdirectories in HTTP handlers [GoLang]
我有以下代码:
1 2 3 4
| r := mux.NewRouter()
r.Handle("/", http.FileServer(http.Dir("./frontend/build/")))
r.Handle("/static", http.FileServer(http.Dir("./frontend/build/static/")))
r.PathPrefix("/api").Handler(auth) |
/api 应该是安全的。如果用户点击 /,我希望他们查看 PROJECTDIR/frontend 目录中的 index.html。
前端目录看起来像
1 2 3 4 5 6 7
| frontend
/build
index.html
/static
/js
/css
/media |
index.html 从 /static 加载所有内容。无论我如何配置它,当我访问 localhost:3000 时,我可以获得 index.html 但 /static 下的所有内容都是 404\\'d。
我是如何错误配置的?
假设您想在端点 /static 上提供目录 "static" 的全部内容,并且您正在运行 bsd/linux 机器,那么以下语法应该可以工作:
1
| http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("./static")))) |
- 我在 MacOS 上(并在构建中运行在 Heroku 上)。假设您的意思是静态的完整路径?这行不通。 \\tr.Handle("/", http.FileServer(http.Dir("frontend/build/"))) \\thttp.Handle("/static/", http.StripPrefix("/static/", http.FileServer (http.Dir("frontend/build/static/")))) \\tr.PathPrefix("/api").Handler(auth)
-
http.Dir("frontend/build/static/") 没有指定正确的路径。您需要以"/"开始路径以表示您的机器的根目录(因此路径类似于 /home/myuser/myapp/static)或使用"./"来指定您正在运行的当前目录app from 作为路径的起点(因此,如果您从"/home/myuser/myapp/"运行,"./"将转换为该路径)