Estou tentando conseguir algo com as regras do nginx e do redirecionamento, o que parece ser bastante simples, mas me deparei com um obstáculo.
Depois de analisar muitas perguntas e respostas, não consigo encontrar uma solução que funcione para mim.
O que eu quero alcançar é o seguinte:
Se alguém navegar para o meu site com qualquer um dos seguintes URLs:
http://mywebsite.com
http://mywebsite.com/
http://mywebsite.com/foo
a pessoa será redirecionada para:
http://mywebsite.com/en/
http://mywebsite.com/en/
http://mywebsite.com/en/foo/
Isto é o que eu tenho no meu arquivo de configuração nginx até agora na ordem em que eu os tenho no arquivo:
location ^/en/(.*) {
try_files $uri /index.php$is_args$args last;
}
location / {
if ( $uri !~ ^/(index\.php|css|jpg|png|images|core|uploads|js|robots\.txt|favicon\.ico) ) {
return 301 /en/$uri;
}
}
No entanto, com a configuração acima, estou correndo em um loop de redirecionamento infinito e a URL na barra de endereços termina assim antes que o servidor desista:
http://mywebsite.com/en//en/en/en/en/en/en/en/en/en/en/en/en/en/en/en/en/en/en/en/
Alguém pode por favor:
a) Explique-me por que minha configuração não teve o efeito desejado para que eu possa entendê-la e não repetir os mesmos erros no futuro
b) Proponha uma solução que funcione e, se possível, melhore a minha configuração
c) Se possível, vá mais além e explique com exemplos como eu posso fazer com que o nginx determine automaticamente a localidade associada à solicitação e transforme dinamicamente a solicitação para incluí-la da maneira descrita acima.
Obrigado