De servir du contenu statique avec une URL de la racine avec le Gorille toolkit
Je suis en essayant d'utiliser le Gorille trousse à outils mux
le paquet pour acheminer les Url dans un web server. À l'aide de cette question comme un guide, j'ai le Go suivantes code:
func main() {
r := mux.NewRouter()
r.Handle("/", http.FileServer(http.Dir("./static/")))
r.HandleFunc("/search/{searchTerm}", Search)
r.HandleFunc("/load/{dataId}", Load)
http.Handle("/", r)
http.ListenAndServe(":8100", nil)
}
La structure de répertoire est:
...
main.go
static\
| index.html
| js\
| <js files>
| css\
| <css files>
Les fichiers Javascript et CSS sont référencés dans index.html
comme ceci:
...
<link rel="stylesheet" href="css/redmond/jquery-ui.min.css"/>
<script src="js/jquery.min.js"></script>
...
Quand j'ai accès http://localhost:8100
dans mon navigateur web de la index.html
le contenu est livré avec succès, cependant, tous les js
et css
Url retourner une erreur 404.
Comment puis-je obtenir le programme pour servir les fichiers de static
sous-répertoires?
- Vous pourriez voir cette discussion (n'utilisant pas de Gorilla si) de servir des fichiers statiques à partir de la racine ou de la sous-répertoires stackoverflow.com/questions/14086063/...
- Je n'ai que cette question au cours de mes recherches, cependant, car il n'était pas à l'aide de Gorille je n'ai jamais été en mesure d'obtenir des idées pour travailler avec ma configuration où l'un de mes objectifs était de ne pas avoir des fichiers statiques dans le répertoire racine de mon projet (à côté de
main.go
). Aussi, il semble très similaire à @réponse de Joe ci-dessous, qui également ne fonctionnera pas avec ma configuration.
Vous devez vous connecter pour publier un commentaire.
Je pense que vous pourriez être à la recherche pour
PathPrefix
...r.PathPrefix("/a/").Handler(http.FileServer(http.Dir("b/"))) r.PathPrefix("/").Handler(http.FileServer(http.Dir("c/")))
Dans ce cas, tout enc/
est servi, mais pasb/
. Essayé un peu différentes variations subtiles mais sans succès. Des idées?r.PathPrefix("/a/").Handler(http.StripPrefix("/a/", http.FileServer(http.Dir("b"))))
.other
routes de l'OBTENIR seront également couverts par le gestionnaire statique.Après beaucoup d'essais et d'erreur, les deux réponses ci-dessus, m'a aidé à en venir avec ce qui a fonctionné pour moi. J'ai statique dossier dans l'application web du répertoire racine.
Avec
PathPrefix
j'ai eu à utiliserStripPrefix
pour obtenir l'itinéraire à travailler de manière récursive.J'espère que cela aide quelqu'un d'autre d'avoir des problèmes.
s := ...
devrait se lire comme suit lors de votre répertoire de travail est[workspace]/src
...s := http.StripPrefix("/static/", httpFileServer(http.Dir("./web/static/")))
J'ai ce code qui fonctionne très agréable, et est ré-utilisable.
Essayez ceci:
src
,href
etc attributs de la forme"/static/js/jquery.min.js"
. Bien que, techniquement, aurait de travail.index.html
fichier n'est plus disponible àhttp://localhost:8100/
images
,css
,js
etc dansstatic
dossier.Ce servir tous les fichiers dans le dossier du pavillon, ainsi que de servir de index.html à la racine.
Utilisation
Code