Maison >développement back-end >Golang >Erreur 404 inattendue avec Go http.FileServer

Erreur 404 inattendue avec Go http.FileServer

WBOY
WBOYavant
2024-02-06 09:18:12547parcourir

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

Contenu de la question

J'essaie d'exécuter deux serveurs de fichiers, l'un servant à ui 文件夹中提供 index.html et l'autre servant d'autres fichiers statiques comme le code ci-dessous :

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

Les deux objets fileserver sont définis exactement de la même manière, le premier (uiserver) fonctionne bien, mais le second (staticfilesserver sur localhost:8080/files) me donne un 404.

J'ai affiné le problème et supprimé le premier (le serveur de fichiers fonctionnel), comme le code ci-dessous :

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

Mais ça me donne quand même 404 sur le chemin localhost:8080/files

Et si je sers le chemin de la poignée à partir d'un chemin autre que /files 更改为 /,它会按预期工作,但这不是我想要的,我只是想知道是否可以在 / et comment puis-je y parvenir.

Aussi, ma structure de dossiers :

|- main.go
|- ui
|--- index.html
|- files
|--- file1.txt
|--- file2.csv
|--- file3.img

Bonne réponse


J'ai réalisé que http.dir()http.servemux.handle() serait lié et ils résument en fait leurs chemins comme ceci :

srv.Handle("/files/", http.FileServer(http.Dir("."))

Le code ci-dessus est fourni tel qu'écrit dans ./files 文件夹中的所有内容,而不是 . (如 dir(".")) Cela a résolu mon problème.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer