Nginx + Wordpress 语言重定向默认语言错误

Nginx + Wordpress 语言重定向默认语言错误

Nginx + Wordpress 语言重定向默认语言错误

抱歉,这里重复了这个问题: Nginx + Wordpress 语言重定向

除默认的 EN 语言外,其余均有效。

我只是想将日本访问者重定向到 /ja/ 目录,以后也许会将更多其他国家的访问者重定向到其他目录。

现在,我希望所有其他国家都加入根域。

我使用的规则是:

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

...

rewrite ^/$ /$lang/ permanent;

此规则将所有其他访问者重定向到 mydomain.com/en/,这当然是 404,因为 EN 是我的主要语言!

=======================================

这是站点端配置中的所有规则

希望有人能帮助我!

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

server 
{ 
listen 80; 
listen 443 ssl http2; 
server_name mydomain.com www.mydomain.com; 
index index.php index.html index.htm default.php default.htm default.html; 
root /www/wwwroot/mydomain.com;

#REWRITE-START

rewrite ^/$ /$lang/ permanent;

include /www/server/panel/vhost/rewrite/mydomain.com.conf;
#REWRITE-END


location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md)
{
    return 404;
}


location ~ \.well-known{
    allow all;
}

location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{
    expires      30d;
    error_log /dev/null;
    access_log /dev/null;
}

location ~ .*\.(js|css)?$
{
    expires      12h;
    error_log /dev/null;
    access_log /dev/null; 
}
access_log  /www/wwwlogs/mydomain.com.log;
error_log  /www/wwwlogs/mydomain.com.log;
}

答案1

default en;如果从中删除该行map,则的值$lang将变为空字符串,在if表达式中被评估为 false。请参阅这个文件了解详情。

您可以rewrite ^/$ ...使用块替换该语句location = /。请参阅这个文件了解详情。

例如:

map $http_accept_language $lang {
    ~ja ja;
}

server {
    ...
    location = / {
        if ($lang) {
            return 301 /$lang/$is_args$args;
        }
    }
    ...
}

这个文件if在嵌套块中的块中允许使用哪些语句location

相关内容