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!