Mein Webprogramm befindet sich im Verzeichnis app1. Beim Zugriff über http://server.com/app1/ ist alles normal. Beim Zugriff über http://server.com/app1 sind die Hyperlinks jedoch vorhanden Dieses sekundäre Verzeichnis fehlt zum Beispiel
<link type="text/css" rel="stylesheet" href="static/style.css" />
Zeigt auf http://server.com/static/sytle.css statt auf http://server.com/app1/static/sytle.c... und führt zu einem Fehler bei der Ressourcenbeschaffung.
Ich weiß, dass ich durch das Hinzufügen von Regeln springen kann
rewrite ^([^.]*[^/])$ / permanent;
Aber dadurch wird der URL ein zusätzlicher Schrägstrich hinzugefügt. Gibt es eine andere Möglichkeit?
Das Folgende ist meine Nginx-Konfiguration:
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; }
正如评论里 DaiJie 所说的,出现这个问题的非常正常,web server 和浏览器默认行为是正确的。
建议题主使用绝对路径或者含域名的完整地址来引用静态资源。