Nginx Config Regex de localização com código de idioma no URL

1

Tentando obter um código de idioma constante no primeiro segmento do url com a configuração de localização nexx regex e não foi possível encontrar a sintaxe correta.

Resultado necessário:

  • example.com permanece example.com
  • example.com/en permanece example.com/en
  • example.com/en/ permanece example.com/en ou example.com/en/ (não importa)
  • example.com/en/etc permanece example.com/en/etc


  • example.com/etc muda para example.com/en/etc
  • example.com/etc/segment muda para example.com/en/etc/segment

Atualmente, descobri este código, mas ele ainda está em algum lugar. Faz loop permanente e não usa argumento $ 1.

location ~ "^/(?![a-z]{2}/)(.+)$" {
    rewrite / /en/$1 permanent;
}

#Using handler here for removing index.php in uri (example.com/index.php -> example.com);
location / {
    index index.htm index.html index.php;
    try_files $uri $uri/ @handler;
}

location @handler {
    rewrite / /index.php?$query_string;
}



ATUALIZAÇÃO: A resposta pode ser encontrada nesta pergunta: link

    
por Toms Bugna 24.11.2015 / 11:25

1 resposta

0

O @handler location irá reescrever o URI para /index.php , que será então redirecionado para /en/index.php , que (se não existir) invoca a localização @handler .

Leia este documento porque você precisa de algo para lidar com PHP. O loop de redirecionamento é causado porque o arquivo ou o manipulador não existe. Você precisa definir um local para manipular arquivos PHP, outro local regex ou seu local nomeado.

    
por 24.11.2015 / 13:14