Я устанавливаю конфигурацию Nginx с моим проектом Django.
Чтобы предоставить некоторый статический файл без показа /static/
в URL,
Я добавил несколько правил перезаписи в конфигурации Nginx.
Вот часть моей конфигурации Nginx:
location /static/ {
location ~* \.(png|jpg|jpeg|gif|css|js)$ {
access_log off;
expires 30d;
}
alias /path/to/myproject/static/;
}
location ~ ^/favicon.ico$ {
rewrite ^/favicon.ico$ /static/favicon.ico;
}
location /foo/ {
rewrite ^/foo/(.*)$ /static/abc/$1;
}
location /bar/ {
rewrite ^/bar/(.*)$ /static/bar/$1;
}
location / {
fastcgi_pass myproject;
include django_fastcgi_params;
proxy_http_version 1.1;
proxy_set_header Connection "";
}
Когда я получу доступ к https://myproject.com/foo,, отобразится 404 страница Django. Я думаю, это потому, что в Nginx нет подходящего местоположения (должно заканчиваться косой чертой /
) и нет соответствующего URL-адреса в urls.py
.
в Django.
Когда я получу доступ к https://myproject.com/foo/,, в папке myproject/static/foo/
будет отображаться index.html
, или будет 403 Запрещено, если нет index.html
.
Но я обнаружил, что ...
Когда я получу доступ к https://myproject.com/foo/abc,, он будет 301 постоянно перемещен в https://myproject.com/static/foo/abc/
Когда я получу доступ к https://myproject.com/foo/abc/,, он будет напрямую отображать https://myproject.com/foo/abc/,, который является index.html
файлом в myproject/static/abc/
Почему эти два URL работают по-разному?
Есть ли какие-либо изменения, которые я должен сделать?