La configuración de Nginx que tengo arroja 404 por .php
ejemplo:
## Any other attempt to access PHP files returns a 404.
location ~* ^.+\.php$ {
return 404;
}
Sin embargo, tengo algún archivo index.php en la subcarpeta que quiero ejecutar. La configuración actual es como:
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;
}
funciona perfectamente, pero el problema son las ubicaciones duplicadas y si hay muchas subpáginas, entonces la configuración se vuelve enorme.
Probé el comodín como * y algunas expresiones regulares, que dicen que la prueba nginx pasó pero no carga la página, es decir, 404. Lo que probé son:
location = /sitename/*/index.php {
fastcgi_pass phpcgi;
}
location ~* ^/sitename/[a-z]/index.php$ {
fastcgi_pass phpcgi;
}
¿Hay alguna manera de que pueda tener algún nombre de ruta en la ubicación como regex o comodín?
+
arreglado.El orden es importante, de la descripción de "ubicación" de nginx :
Significa:
=
. (coincidencia "prefijo de coincidencia más largo")Necesita ajustar el orden de las partes de expresiones regulares.
fuente