Un problème détecté lors de la configuration de la réécriture nginx
if (!-e $document_root$fastcgi_script_name) {
rewrite ^.*$ /404.html break;
}
C'est normal, mais après avoir supprimé la pause,
if (!-e $document_root$fastcgi_script_name) {
rewrite ^.*$ /404.html;
}
Une erreur a été signalée à ce moment
cycle de réécriture ou de redirection interne pendant le traitement "/404.html
Quelle est la différence entre ajouter et ne pas ajouter de break ? Lorsque vous n'ajoutez pas de break, que se passe-t-il après la réécriture ? Demandez à Dieu de clarifier mes doutes
--------Mise à jour---------
Le fichier 404.html existe
Lorsque je change break en dernier, l'erreur ci-dessus sera toujours signalée, donc je pense que sans ajouter de break ni changer break en dernier, lorsque l'uri correspond à la réécriture ci-dessus, le bloc d'emplacement sera à nouveau mis en correspondance, mais les valeurs des variables ($document_root, $fastcgi_script_name...) n'ont pas changé, provoquant la saisie à nouveau du bloc if, et la boucle continue jusqu'à plus de 10 fois, puis une erreur 500 est signalée
--------Mettre à jour à nouveau---------
Après plus de tests, nous avons constaté que dans le bloc d'emplacement, s'il n'y a pas d'indicateur de rupture après la réécriture ou s'il y a un dernier indicateur après la réécriture, alors le bloc d'emplacement sera resélectionné après la réécriture si vous entrez toujours le bloc d'emplacement d'origine. , alors la variable ($ document_root, $fastcgi_script_name...) ne changera pas, mais si elle est redirigée vers un autre bloc d'emplacement après la réécriture, les variables changeront à ce moment-là
Si vous n'ajoutez pas de pause, il ne s'arrêtera pas et continuera à trouver la prochaine règle de réécriture.
Réécrivez toutes les requêtes vers 404.html Si 404.html n'existe pas, ce sera une boucle infinie.