Nginx + redirecionamento da linguagem Wordpress

1

No momento, estou tentando configurar uma instalação do Nginx com o multisite do Wordpress usado para suporte a idiomas.

O multisite é configurado: mysite.com (não usado) mysite.com/it mysite.com/en

Basicamente eu quero adicionar um idioma padrão e redirecionar se eu encontrar inglês. O site está realmente em uma instalação do Apache, então usamos:

RewriteCond %{HTTP:Accept-Language} ^en [NC]
RewriteRule ^$ /en/ [L,R=301]

RewriteRule ^$ /it/ [L,R=301]

para o redirecionamento real.

Estou tentando replicar isso com o nginx, sem qualquer sorte. Até agora eu adicionei:

map $http_accept_language $lang {
    default it;
    ~en en;
}

server {

 listen       80;
 server_name  mysite.com;
 access_log  /var/log/nginx/logs/mysite-access.log ;
 error_log /var/log/nginx/logs/mysite-error.log ;

 location / {
    root   /var/www/html/mysite;
    index  index.php index.html;
    try_files $uri $uri/ /index.php?$args;
    rewrite ^ /$lang/ permanent;
 }    

#Other rules used by wordpress and plugins
}

Isso resulta no erro "A página não redireciona corretamente".

Alguma dica de como resolver o problema?

Obrigado.

    
por flero 09.05.2016 / 12:05

1 resposta

0

Aqui está um problema:

    rewrite ^ /$lang/ permanent;

Você está reescrevendo todas solicitação, não apenas solicitações para a página inicial, porque todas solicitação tem um começo.

Existem (pelo menos) duas maneiras de corrigir isso. Você pode usar:

  1. Reescreva apenas as solicitações para a página inicial.

    rewrite ^/$ /$lang/ permanent;
    
  2. Use um location específico que corresponda apenas à página inicial:

    location = / {
        return 301 /$lang/;
    }
    
por 09.05.2016 / 14:16