Ma réécriture Nginx télécharge le fichier PHP

12

J'ai la règle de réécriture suivante que j'essaie:

            location / {
                    index index.php index.html;
                    rewrite  ^/test$  /test.php  break;
            }

Et j'ai aussi:

            location ~ \.php$ {
                    fastcgi_pass    127.0.0.1:9000;
                    include         fastcgi_params;
                    fastcgi_param SCRIPT_FILENAME /home/sites/default$fastcgi_script_name;
                    fastcgi_index   index.php;
            }

Les fichiers php normaux fonctionnent bien, mais il semble que ma redirection télécharge simplement le fichier php vers lequel je redirige, plutôt que de l'analyser.

Qu'est-ce que je rate? J'ai obtenu le fichier à charger, au lieu de le télécharger, en plaçant le truc fastcgi dans le premier bloc d'emplacement, mais il n'a toujours pas été analysé en php.

willdanceforfun
la source

Réponses:

24

Remplacez breakpar last.

Étant donné que la nouvelle URL devra être traitée par un autre location, vous devez avoir le traitement de redémarrage nginx pour la nouvelle URL réécrite, ce qui n'est effectué que lorsque vous l'utilisez lastdans la rewriterègle.

Voir les documents pour une explication plus complète.

Michael Hampton
la source
@TamasKalman Eh? Vous ne ressemblez pas à l'OP. Si vous rencontrez un problème, vous pouvez poser une nouvelle question.
Michael Hampton