Diese Linie:
location ~ ^/index.php($|/) {
weist nginx an, nur index.php
an PHP-Interpreter zu übergeben, und Sie müssen es auch auf andere PHP-Dateien anwenden, sodass hier eine generische Regel erforderlich ist:
location ~ ^/(.*).php($|/) {
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.com
wird die PHP-Datei gut dargestellt. Ich versuche jedoch jetzt, einen bestimmten Pfad /update/whatever
in neu zu schreiben /update.php?var=whatever
. Zu diesem Zweck habe ich location
meiner 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/whatever
PHP-Datei heruntergeladen, anstatt die geparste Ausgabe von PHP bereitzustellen.
Ich habe auch versucht, die fastcgi
Direktiven mit demselben Ergebnis zu diesem Standortblock hinzuzufügen . Kann mir jeder sagen, was ich in meiner Konfig durcheinander gebracht habe?
Diese Linie:
location ~ ^/index.php($|/) {
weist nginx an, nur index.php
an PHP-Interpreter zu übergeben, und Sie müssen es auch auf andere PHP-Dateien anwenden, sodass hier eine generische Regel erforderlich ist:
location ~ ^/(.*).php($|/) {