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

Unerwarteter 404-Fehler bei Go http.FileServer

WBOY
WBOYnach vorne
2024-02-06 09:18:12544Durchsuche

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)
    }
}

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

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("."))

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen