Rumah >pembangunan bahagian belakang >Golang >Ralat 404 yang tidak dijangka dengan Go http.FileServer
Saya cuba menjalankan dua pelayan fail, satu berkhidmat di ui
文件夹中提供 index.html
dan satu lagi menyajikan beberapa fail statik lain seperti kod di bawah:
package main import ( "log" "net/http" ) func main() { srv := http.newservemux() // file server 1 uiserver := http.fileserver(http.dir("./ui")) srv.handle("/", uiserver) // file server 2 staticfilesserver := http.fileserver(http.dir("./files")) srv.handle("/files", staticfilesserver) if err := http.listenandserve(":8080", srv); err != nil { log.fatal(err) } }
Kedua-dua objek pelayan fail ditakrifkan dengan cara yang sama, yang pertama (uiserver) berfungsi dengan baik, tetapi yang kedua (staticfileserver on localhost:8080/files
) memberi saya 404.
Saya mengecilkan masalah dan mengalih keluar yang pertama (pelayan fail yang berfungsi), seperti kod di bawah:
package main import ( "log" "net/http" ) func main() { srv := http.newservemux() staticfilesserver := http.fileserver(http.dir("./files")) srv.handle("/files", staticfilesserver) if err := http.listenandserve(":8080", srv); err != nil { log.fatal(err) } }
Tetapi ia masih memberi saya 404 di laluan localhost:8080/files
Bagaimana jika saya melayani laluan pemegang daripada laluan selain daripada /files
更改为 /
,它会按预期工作,但这不是我想要的,我只是想知道是否可以在 /
dan bagaimana saya mencapai ini.
Juga, struktur folder saya:
|- main.go |- ui |--- index.html |- files |--- file1.txt |--- file2.csv |--- file3.img
Saya menyedari bahawa http.dir()
和 http.servemux.handle()
akan berkaitan dan mereka sebenarnya meringkaskan laluan mereka seperti ini:
srv.Handle("/files/", http.FileServer(http.Dir("."))
Kod di atas disediakan seperti yang tertulis dalam ./files
文件夹中的所有内容,而不是 .
(如 dir(".")
)
Ia menyelesaikan masalah saya.
Atas ialah kandungan terperinci Ralat 404 yang tidak dijangka dengan Go http.FileServer. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!