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

Erreur 404 inattendue avec Go http.FileServer

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Libérer: 2024-02-06 09:18:12
avant
596 Les gens l'ont consulté

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)
    }
}
Copier après la connexion

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)
    }
}
Copier après la connexion

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
Copier après la connexion


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("."))
Copier après la connexion

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 de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal