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.

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.


@TamasKalman Eh? Vous ne ressemblez pas à l'OP. Si vous rencontrez un problème, vous pouvez poser une nouvelle question.
Michael Hampton
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.