Se é maligno, mas como os estados da documentação , está ok para rewrite ... last declarações.
No entanto, uma abordagem alternativa (que ainda extrai apenas uma parte do $uri ) é usar um local nomeado no final da instrução try_files :
location /qa/ {
try_files $uri $uri/ @qa;
}
location @qa {
rewrite ^/qa/(.*)$ /qa/index.php?qa-rewrite=$1 last;
}
A abordagem de localização regex também é válida. Mas os locais de regex são avaliados de forma diferente para prefixar os locais. Você precisa colocar o bloco location ~ \.php$ acima no bloco location ~ ^/qa/(.*) , para que os URIs com .php sejam processados no local correto.