A expressão regular location blocks é avaliada em ordem, portanto o bloco .php deve ser colocado antes do bloco /test/... , caso contrário os arquivos .php em /test/ serão baixados em vez de serem executados. Consulte este documento para obter detalhes.
Sua melhor versão foi a segunda do passado. A expressão regular extrai apenas o elemento do caminho após o prefixo /test/ .
Apenas inverta os blocos location . Por exemplo:
server {
server_name example.com;
root /var/www/example.com;
location ~ \.php$ {
...
}
location ~ /test/(?<content>[^/]+) {
try_files $uri $uri/ /test/$content/index.php?$args;
}
}