Einen bestimmten Pfad in xginx neu schreiben

Einen bestimmten Pfad in xginx neu schreiben

Ich versuche, einen bestimmten Pfad mit nginx neu zu schreiben. Ich habe meinen Server mit nginx/php-fpm/php eingerichtet und es funktioniert einwandfrei.

Ich habe folgende Serverkonfiguration:

server {
    listen 80;

    server_name domain.com;
    root /srv/www/domain.com/public;

    location ~ ^/index.php($|/) {
        fastcgi_split_path_info ^(.+.php)(.*)$;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param SCRIPT_NAME $fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_pass   127.0.0.1:9000;
        include        fastcgi_params;
    }

    location / {
       index index.php;
            try_files $uri /index.php?$args;
    }
}

Und das funktioniert. D. h. wenn ich gehe, http://domain.comwird die PHP-Datei einwandfrei gerendert. Allerdings versuche ich jetzt, einen bestimmten Pfad umzuschreiben . /update/whateverDazu /update.php?var=whateverhabe ich locationmeiner Konfiguration den folgenden Block hinzugefügt (vor dem location ~ ^/index.php($|/) {Block):

location ~* ^\/update/(\w+)$ {
    rewrite ^/update/(\w+)$ /update.php?browser=$1 last;
}

Aber wenn ich versuche, auf die URL zuzugreifen, http://domain.com/update/whateverwird die PHP-Datei heruntergeladen, anstatt die analysierte Ausgabe von PHP bereitzustellen.

Ich habe auch versucht, die fastcgiAnweisungen zu diesem Standortblock hinzuzufügen, mit demselben Ergebnis. Kann mir jemand sagen, was ich in meiner Konfiguration vermasselt habe?

Antwort1

Diese Linie:

location ~ ^/index.php($|/) {

weist nginx an, nur an den PHP-Interpreter zu übergeben index.php, und Sie müssen es auch auf andere PHP-Dateien anwenden, sodass hier eine allgemeinere Regel erforderlich ist:

location ~ ^/(.*).php($|/) {

verwandte Informationen