Maison  >  Questions et réponses  >  le corps du texte

La différence entre la réécriture nginx sans interruption et avec interruption

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à

習慣沉默習慣沉默2714 Il y a quelques jours606

répondre à tous(1)je répondrai

  • 習慣沉默

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

    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.

    répondre
    0
  • Annulerrépondre