La configuration Nginx que j'ai jette 404 .php
comme:
## Any other attempt to access PHP files returns a 404.
location ~* ^.+\.php$ {
return 404;
}
Cependant, j'ai un fichier index.php dans le sous-dossier que je veux exécuter. La configuration actuelle est comme:
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;
}
cela fonctionne parfaitement, mais le problème est les emplacements en double et s'il y a beaucoup de sous-pages, la configuration devient énorme.
J'ai essayé le caractère générique comme * et un regex, qui dit que le test nginx a réussi mais ne charge pas la page, c'est-à-dire 404. Ce que j'ai essayé, c'est:
location = /sitename/*/index.php {
fastcgi_pass phpcgi;
}
location ~* ^/sitename/[a-z]/index.php$ {
fastcgi_pass phpcgi;
}
Existe-t-il un moyen de disposer d'un chemin d'accès à l'emplacement comme expression régulière ou caractère générique?
+
l'a corrigé.L'ordre est important, d'après la description de «l'emplacement» de nginx :
Ça veut dire:
=
. (correspondance "préfixe correspondant le plus long")Vous devez ajuster l'ordre des pièces d'expression régulière.
la source