我想提供一个具有下一个形式的文件夹:
my-project/
- public/ <- The folder that I want to serve and also all the subfolders and files
- css/
- styles.css
- js/
- script.js
- main.go
我想使用URL的http://localhost/api/static/css/styles.css
和http://localhost/api/static/js/script.js
访问它
所以我试图做下一步:
package main
import (
"log"
"net/http"
"github.com/go-chi/chi/v5"
)
func main() {
r := chi.NewRouter()
r.Handle("/api/static/*", http.StripPrefix("/public/", http.FileServer(http.Dir("./public"))))
if err := http.ListenAndServe(":80", r); err != nil {
log.Fatal(err)
}
}
这是不起作用的,当我尝试访问http://localhost/api/static/css/styles.css
或http://localhost/api/static/js/script.js
时,它会给我一个HTTP 404错误代码
分析解答
您必须从路径上剥离/api/static
,例如,如果提出/api/static/css/styles.css
的请求,则将其剥离将留下css/styles.css
,该请求将在./public
下查找以提供./public/css/styles.css
。