Servir arquivos diferentes dependendo do idioma do navegador

2

Supondo que eu tenha um arquivo en/index.html e um arquivo de/index.html , eu gostaria de exibir o arquivo de/index.html para usuários que têm o alemão como idioma padrão no navegador e para todos os outros que eu gostaria servir o arquivo en/index.html .

Como posso fazer isso dentro da configuração normal do nginx?

    
por wintermeyer 16.11.2016 / 06:42

2 respostas

1

A maneira mais fácil de fazer isso:

set $first_language $http_accept_language;
if ($http_accept_language ~* '^(.+?),') {
  set $first_language $1;
}

set $language_suffix 'en';
if ($first_language ~* 'de') {
  set $language_suffix 'de';
}

location / {
  try_files $uri/$language_suffix/index.html $uri $uri.html;
}
    
por 16.11.2016 / 12:11
0

Existe outra maneira de fazer isso, mas também tem algumas desvantagens:

map $http_accept_language $index_page {
    default /index.html;

    "~*^de" /index.de.html;
    "~*^fr" /index.fr.html;
}

Prós: não se (se for mal), menos código.

Contras: o mapa só pode ser usado dentro do bloco http { } , então a correspondência de expressão regular acontecerá para todos os sites, não apenas para o atual.

    
por 25.11.2017 / 12:32

Tags