Die Nginx-Konfiguration, für die ich 404 ausgelöst habe, sieht folgendermaßen aus .php
:
## Any other attempt to access PHP files returns a 404.
location ~* ^.+\.php$ {
return 404;
}
Ich habe jedoch eine index.php-Datei im Unterordner, die ich ausführen möchte. Die aktuelle Konfiguration ist wie folgt:
location = /sitename/subpage/index.php {
fastcgi_pass phpcgi; #where phpcgi is defined to serve the php files
}
location = /sitename/subpage2/index.php {
fastcgi_pass phpcgi;
}
location = /sitename/subpage3/index.php {
fastcgi_pass phpcgi;
}
es funktioniert perfekt, aber das Problem sind doppelte Speicherorte und wenn es viele Unterseiten gibt, wird die Konfiguration riesig.
Ich habe den Platzhalter * und etwas Regex ausprobiert, der besagt, dass der Nginx-Test bestanden wurde, aber die Seite nicht geladen wurde, z. B. 404. Was ich versucht habe, sind:
location = /sitename/*/index.php {
fastcgi_pass phpcgi;
}
location ~* ^/sitename/[a-z]/index.php$ {
fastcgi_pass phpcgi;
}
Gibt es eine Möglichkeit, einen Pfadnamen als Regex oder Wildcard im Speicherort zu haben?
+
behoben.Reihenfolge ist wichtig, aus der Beschreibung von nginx "location" :
Es bedeutet:
=
. ("Übereinstimmung mit dem längsten übereinstimmenden Präfix")Sie müssen die Reihenfolge der Regex-Teile anpassen.
quelle