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

Erreur 404 inattendue avec Go http.FileServer

WBOY
Libérer: 2024-02-06 09:18:12
avant
526 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!

source:stackoverflow.com
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