Ich versuche, zwei Dateiserver zu betreiben, von denen einer bei ui
文件夹中提供 index.html
und der andere einige andere statische Dateien wie den folgenden Code bereitstellt:
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) } }
Beide Dateiserverobjekte sind genau gleich definiert, das erste (uiserver) funktioniert einwandfrei, aber das zweite (staticfilesserver auf localhost:8080/files
) gibt mir eine 404.
Ich habe das Problem eingegrenzt und den ersten (den funktionierenden Dateiserver) entfernt, wie im folgenden Code:
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) } }
Aber es gibt mir immer noch 404 auf dem Weg localhost:8080/files
Was ist, wenn ich den Handle-Pfad von einem anderen Pfad als /files
更改为 /
,它会按预期工作,但这不是我想要的,我只是想知道是否可以在 /
aus bediene und wie erreiche ich das?
Außerdem meine Ordnerstruktur:
|- main.go |- ui |--- index.html |- files |--- file1.txt |--- file2.csv |--- file3.img
Mir wurde klar, dass http.dir()
和 http.servemux.handle()
verwandt sein würde und sie fassen ihre Wege tatsächlich so zusammen:
srv.Handle("/files/", http.FileServer(http.Dir("."))
Der obige Code wird wie in ./files
文件夹中的所有内容,而不是 .
(如 dir(".")
geschrieben bereitgestellt.
Es hat mein Problem gelöst.
Das obige ist der detaillierte Inhalt vonUnerwarteter 404-Fehler bei Go http.FileServer. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!