繁体   English   中英

Nginx 根据语言代码使用不同的路径

[英]Nginx use different path based on language code

我有一个EnglishSpanish两种语言的网站。

每种语言的网站都托管在不同的指令中

/var/www/html/en-US/      -> English version
/var/www/html/es/         -> Spanish version

使用以下nginx配置将用户重定向到特定于语言的目录

https://example.com/en/     -> Serve English version
https://example.com/es/     -> Serve Spanish version

并且配置是

map $http_accept_language $accept_language {
    ~*^es es;
    ~*^en en;
}


server {
    server_name                  example.com;

    root /var/www/html/en-US;

    # Fallback to default language if no preference defined by browser
    if ($accept_language ~ "^$") {
        set $accept_language "en";
    }

    # Redirect "/" to Angular application in the preferred language of the browser
    rewrite ^/$ /$accept_language permanent;

    location ~ ^/en {
        root             /var/www/html/en-US;
        index            index.html;
        try_files        $uri $uri/ =404;
    }

    location ~ ^/es {
        root             /var/www/html/es;
        index            index.html;
        try_files        $uri $uri/ =404;
    }
}

现在,访问https://example.com重定向到https://example.com/en但给出 404。

通过进行以下更改解决了该问题

server {
    server_name                  example.com;

    root /var/www/html/en-US/;

    # Fallback to default language if no preference defined by browser
    if ($accept_language ~ "^$") {
        set $accept_language "en";
    }

    # Redirect "/" to Angular application in the preferred language of the browser
    rewrite ^/$ /$accept_language/ permanent;

    location /en/ {
        alias            /var/www/html/en-US/;
        try_files        $uri $uri/ =404;
    }

    location /es/ {
        alias            /var/www/html/es/;
        try_files        $uri $uri/ =404;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM