location ~ ^/projects/(.+) {
rewrite ^ http://$server_name/project/$1 permanent;
}
O. + em vez de. * corrige o problema, uma vez que. + corresponde a 1 ou mais caracteres, enquanto. * corresponde a 0 ou mais caracteres. Portanto, a pasta / projects / não é tocada pela regra.
Para 1, o seguinte deve funcionar:
location = /project {
rewrite ^ http://$server_name/projects permanent;
}
location =
é a diretiva de correspondência exata para nginx, portanto, só coincide se o URI for exatamente /project
.
Eu também substitui a diretiva de retorno 301 por reescrita -diretiva, já que essa é a forma preferida de reescrever.
- Tero