Rumah >pembangunan bahagian belakang >Golang >Ralat 404 yang tidak dijangka dengan Go http.FileServer

Ralat 404 yang tidak dijangka dengan Go http.FileServer

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBke hadapan
2024-02-06 09:18:12555semak imbas

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

Kandungan soalan

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

Jawapan betul


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!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam