Nginx + WordPress语言redirect

我目前正在尝试使用用于语言支持的Wordpress多站点来configurationNginx安装。

多站点configuration:mysite.com(未使用)mysite.com/it mysite.com/en

基本上我想添加一个默认的语言和redirect,如果我find英语。 该网站实际上是在Apache安装,所以我们使用:

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

为实际的redirect。

我试图用nginx复制,没有任何运气。 到目前为止我补充说:

 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 } 

这导致“页面不正确redirect”错误。

有关如何解决问题的任何提示?

谢谢。

这是一个问题:

  rewrite ^ /$lang/ permanent; 

您正在重写每个请求,而不仅仅是请求到主页,因为每个请求都有一个开始。

有(至less)两种方法来解决这个问题。 你可以使用:

  1. 只重写主页的请求。

     rewrite ^/$ /$lang/ permanent; 
  2. 使用仅与主页匹配的特定location

     location = / { return 301 /$lang/; }