首頁 > 後端開發 > Golang > Go http.FileServer 出現意外的 404 錯誤

Go http.FileServer 出現意外的 404 錯誤

WBOY
發布: 2024-02-06 09:18:12
轉載
521 人瀏覽過

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

問題內容

我正在嘗試執行兩台檔案伺服器,其中一台在ui 資料夾中提供 index.html 服務,另一台提供其他一些靜態文件,如下面的程式碼:

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)
    }
}
登入後複製

兩個 fileserver 物件的定義方式完全相同,第一個 (uiserver) 運作正常,但第二個 (localhost:8080/files 上的 staticfilesserver) 給我 404。

我縮小了問題範圍並刪除了第一個(工作文件伺服器),就像下面的程式碼一樣:

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)
    }
}
登入後複製

但它仍然在路徑 localhost:8080/files 上給我 404

如果我將句柄路徑從/files 更改為/,它會按預期工作,但這不是我想要的,我只是想知道是否可以在/ 以外的路徑上提供服務以及如何我實現了這一點。

另外,我的資料夾結構:

|- main.go
|- ui
|--- index.html
|- files
|--- file1.txt
|--- file2.csv
|--- file3.img
登入後複製


正確答案


我意識到http.dir()http.servemux.handle() 會有關係,它們實際上總結了它們的路徑,如下所示:

srv.Handle("/files/", http.FileServer(http.Dir("."))
登入後複製

上面的程式碼提供 ./files 資料夾中的所有內容,而不是 .(如 dir(".") 中所寫) 它解決了我的問題。

以上是Go http.FileServer 出現意外的 404 錯誤的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:stackoverflow.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板