A configuração do Nginx que eu lance 404 para algo .php
como:
## Any other attempt to access PHP files returns a 404.
location ~* ^.+\.php$ {
return 404;
}
No entanto, tenho algum arquivo index.php na subpasta que desejo executar. A configuração atual é 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 perfeitamente, mas o problema são locais duplicados e, se houver muitas subpáginas, a configuração se tornará enorme.
Eu tentei o curinga como * e algum regex, que diz que o teste nginx passou mas não carrega a página, ou seja, 404. O que eu tentei são:
location = /sitename/*/index.php {
fastcgi_pass phpcgi;
}
location ~* ^/sitename/[a-z]/index.php$ {
fastcgi_pass phpcgi;
}
Existe alguma maneira de ter algum nome de caminho no local como regex ou curinga?
+
consertou.A ordem é importante, na descrição da "localização" do nginx :
Isso significa:
=
. (correspondência "prefixo de correspondência mais longo")Você precisa ajustar a ordem das peças regex.
fonte