2017-06-30 15 views
0

Ich versuche, eine Wartungsseite zu bedienen. Also habe ich try_files einen Versuch gegeben und immer maintenance.html servieren.Nginx leitet nicht um, wenn URL die Erweiterung .html hat

Es funktioniert gut, wenn URL wie app.amazing.com oder so etwas app.amazing.com/[a-z0-9]* ist, aber sobald es eine HTML-Erweiterung, versucht Nginx diese sehr Datei (exemple: app.amazing.com/test.html) zu dienen und gibt eine 404, wenn es nicht der Fall ist existieren.

server { 
    listen [::]:443; 
    listen 443; 

    server_name app.amazing.com; 
    root /var/www/front/public; 
    include /etc/nginx/conf.d/expires.conf; 

    charset utf-8; 

    location/{ 
     try_files /maintenance.html =404; 
    } 
} 

Ich habe auch versucht eine Rewrite wie folgt aus:

location/{ 
     rewrite (.*) /maintenance.html break; 
} 

ich dies sogar versucht if-based solution, aber nichts scheint zu funktionieren. Habe ich etwas verpasst?

Antwort

1

UPDATE: getestet und Arbeits

server { 
    listen [::]:443; 
    listen 443; 

    server_name app.amazing.com; 
    root /var/www/front/public; 
    include /etc/nginx/conf.d/expires.conf; 

    charset utf-8; 

    set $maintenance on; 
    if ($uri ~* \.(ico|css|js|gif|jpe?g|png|html)(\?[0-9]+)?) { 
     set $maintenance off; 
    } 
    if ($maintenance = on) { 
     return 503; 
    } 
    error_page 503 @maintenance; 
    location @maintenance { 
     rewrite ^(.*)$ /maintenance.html break; 
    } 
    location/{ 
     # here hoes your usual location/rules 
     try_files $uri $uri/ =404; 
    } 

} 

Bitte ändern Sie die 404 Code 503, wie folgt aus:

server { 
    listen [::]:443; 
    listen 443; 

    server_name app.amazing.com; 
    root /var/www/front/public; 
    include /etc/nginx/conf.d/expires.conf; 

    charset utf-8; 

    location/{ 
     try_files $uri $uri/ =404; 
    } 
} 

404 = NOT FOUND

UPDATE: 302 = VORÜBERGEHEND REDIRECT

+0

503 wird nicht umgeleitet. 3XX sollte stattdessen verwendet werden. – diarpi

+0

Danke @diarpi für die Korrektur. –

+0

Ich dachte, '404 'war nur für den Fall, dass' Maintenance.html 'nicht existierte. Aber für eine Weiterleitung ist es genauer. Wie auch immer, das ändert nichts daran, dass die Eingabe von 'app.amazing.com/test.html' immer noch einen 404 zurückgibt. – Buzut

Verwandte Themen