Heim  >  Fragen und Antworten  >  Hauptteil

Der Unterschied zwischen Nginx-Rewrite ohne Pause und mit Pause

Bei der Konfiguration von Nginx Rewrite wurde ein Problem gefunden

if (!-e $document_root$fastcgi_script_name) {
    rewrite ^.*$ /404.html break;
}

Das ist normal, aber nach dem Entfernen kommt es zu einer Pause,

if (!-e $document_root$fastcgi_script_name) {
    rewrite ^.*$ /404.html;
}

Zu diesem Zeitpunkt wurde ein Fehler gemeldet

Umschreiben oder interner Umleitungszyklus während der Verarbeitung von „/404.html

Was ist der Unterschied zwischen dem Hinzufügen und dem Nicht-Hinzufügen einer Pause, wenn keine Pause hinzugefügt wird? Was passiert nach dem Umschreiben? Bitte Gott, meine Zweifel auszuräumen

--------Update---------

404.html-Datei existiert

Wenn ich „Break“ in „Last“ ändere, wird der obige Fehler weiterhin gemeldet. Ich denke also, dass ohne das Hinzufügen von „Break“ oder das Ändern von „Break“ in „Last“ der Standortblock erneut abgeglichen wird, wenn der URI mit dem obigen Umschreiben übereinstimmt, aber die Werte der Variablen ($document_root, $fastcgi_script_name...) haben sich nicht geändert, was dazu führt, dass der if-Block erneut eingegeben wird und die Schleife mehr als 10 Mal fortgesetzt wird und dann ein 500-Fehler gemeldet wird

--------Erneut aktualisieren---------

Nach weiteren Tests haben wir festgestellt, dass der Standortblock nach dem Umschreiben erneut ausgewählt wird, wenn nach dem Umschreiben kein Break-Flag oder ein letztes Flag vorhanden ist , dann ändert sich die Variable ($ document_root, $fastcgi_script_name...) nicht, aber wenn sie nach dem Umschreiben an einen anderen Standortblock umgeleitet wird, ändern sich die Variablen zu diesem Zeitpunkt

習慣沉默習慣沉默2714 Tage vor609

Antworte allen(1)Ich werde antworten

  • 習慣沉默

    習慣沉默2017-05-16 17:11:28

    不加 break 就不会停止,继续找下一个 rewrite 规则。

    把所有请求 rewrite 到了 404.html,如果 404.html 也不存在,就死循环了。

    Antwort
    0
  • StornierenAntwort