Schreibe einen bestimmten Pfad in xginx um

1735
PeeHaa

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

Ich habe die 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. Dh wenn ich dazu gehe, http://domain.comwird die PHP-Datei gut dargestellt. Ich versuche jedoch jetzt, einen bestimmten Pfad /update/whateverin neu zu schreiben /update.php?var=whatever. Zu diesem Zweck habe ich locationmeiner Konfig (vor dem location ~ ^/index.php($|/) {Block) den folgenden Block hinzugefügt :

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

Wenn ich jedoch versuche, auf die URL zuzugreifen, wird die http://domain.com/update/whateverPHP-Datei heruntergeladen, anstatt die geparste Ausgabe von PHP bereitzustellen.

Ich habe auch versucht, die fastcgiDirektiven mit demselben Ergebnis zu diesem Standortblock hinzuzufügen . Kann mir jeder sagen, was ich in meiner Konfig durcheinander gebracht habe?

0

1 Antwort auf die Frage

1
dev-null-dweller

Diese Linie:

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

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

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