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
不加 break 就不会停止,继续找下一个 rewrite 规则。
把所有请求 rewrite 到了 404.html,如果 404.html 也不存在,就死循环了。