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

Ralat 404 yang tidak dijangka dengan Go http.FileServer

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Lepaskan: 2024-02-06 09:18:12
ke hadapan
555 orang telah melayarinya

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)
    }
}
Salin selepas log masuk

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)
    }
}
Salin selepas log masuk

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
Salin selepas log masuk


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("."))
Salin selepas log masuk

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!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan