Mon programme Web se trouve dans le répertoire app1. Lors d'un accès via http://server.com/app1/, tout est normal. Cependant, lors d'un accès via http://server.com/app1, les hyperliens dans la page seront. manquant. Ce répertoire secondaire, par exemple
<link type="text/css" rel="stylesheet" href="static/style.css" />
Pointe vers http://server.com/static/sytle.css au lieu de http://server.com/app1/static/sytle.c... provoquant un échec d'acquisition des ressources.
Je sais que je peux sauter en ajoutant des règles
rewrite ^([^.]*[^/])$ / permanent;
Mais cela ajoutera une barre oblique supplémentaire à l'URL. Existe-t-il un autre moyen ?
Voici ma configuration nginx :
set $dir /home/user/apps; location ~ static/(.*)$ { alias $dir/$uri; } location ~ ^/([^/]+) { set $app ; include uwsgi_params; uwsgi_pass unix:///tmp/uwsgi_vhosts.sock; uwsgi_param UWSGI_CHDIR $dir/$app/; uwsgi_param UWSGI_PYHOME $dir/$app/; uwsgi_param PATH_INFO /; uwsgi_param UWSGI_SCRIPT index; uwsgi_param SERVER_NAME $server_name.$app; }
Comme DaiJie l'a dit dans les commentaires, il est tout à fait normal que ce problème se produise, et le comportement par défaut du serveur Web et du navigateur est correct.
Il est recommandé au sujet d'utiliser des chemins absolus ou des adresses complètes incluant des noms de domaine pour référencer des ressources statiques.