Ich habe eine Django-Anwendung für eine Seite. Wenn Sie derzeit eine URL auf der Website besuchen, die nicht existiert, wird ein 404-Fehler angezeigt. In diesem Fall möchte ich jedoch auf die Homepage der Website umleiten. Ich bin mir nicht sicher, ob ich das mit Nginx machen soll, oder gibt es einen Weg, dies in Django zu tun? Beigefügt ist meine Nginx-Datei unten. Ich habe versucht, die folgende Einstellung zu verwenden, aber es hat nicht funktioniert.Wie umleiten 404 Anfragen an die Startseite in Django einzelne Seite App mit Nginx?
error_page 404 = @foobar;
location @foobar {
return 301 /webapps/mysite/app/templates/index.html;
}
upstream mysite_wsgi_server {
# fail_timeout=0 means we always retry an upstream even if it failed
# to return a good HTTP response (in case the Unicorn master nukes a
# single worker for timing out).
server unix:/webapps/mysite/run/gunicorn.sock fail_timeout=0;
}
server {
listen 80;
server_name kanjisama.com;
rewrite ^https://$server_name$request_uri? permanent;
}
server {
listen 443;
server_name kanjisama.com;
ssl on;
ssl_certificate /etc/letsencrypt/live/kanjisama.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/kanjisama.com/privkey.pem;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
client_max_body_size 4G;
access_log /webapps/mysite/logs/nginx_access.log;
error_log /webapps/mysite/logs/nginx_error.log;
location /static/ {
alias /webapps/mysite/app/static/;
}
location /media/ {
alias /webapps/mysite/media/;
}
location/{
if (-f /webapps/mysite/maintenance_on.html) {
return 503;
}
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header Host $host;
proxy_redirect off;
# Try to serve static files from nginx, no point in making an
# *application* server like Unicorn/Rainbows! serve static files.
if (!-f $request_filename) {
proxy_pass http://mysite_wsgi_server;
break;
}
# Error pages
error_page 500 502 504 /500.html;
location = /500.html {
root /webapps/mysite/app/mysite/templates/;
}
error_page 503 /maintenance_on.html;
location = /maintenance_on.html {
root /webapps/mysite/;
}
error_page 404 = @foobar;
location @foobar {
return 301 /webapps/mysite/app/templates/index.html;
}
}