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
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!