Heim > Backend-Entwicklung > Golang > Unerwarteter 404-Fehler bei Go http.FileServer

Unerwarteter 404-Fehler bei Go http.FileServer

WBOY
Freigeben: 2024-02-06 09:18:12
nach vorne
521 Leute haben es durchsucht

Go http.FileServer 出现意外的 404 错误

Frageninhalt

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)
    }
}
Nach dem Login kopieren

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)
    }
}
Nach dem Login kopieren

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
Nach dem Login kopieren


Richtige Antwort


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("."))
Nach dem Login kopieren

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!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage