如何在nginx域名后添加语言代码

如何在nginx域名后添加语言代码,nginx,url-rewriting,magento2.2,Nginx,Url Rewriting,Magento2.2,我想在URL上添加en us语言代码。期望如下 当用户点击时,页面应该将用户重定向到 注意:我通过以下代码实现了这一点 location = / { rewrite ^ /en-us/ redirect; } 如何将客户重定向到以下场景 ,应重定向到 ,它不应该在url中附加额外的en us ,它不应该在url中附加en-us 简单地说,我想要实现的是,如果url中没有en-us,那么我们应该在XX-XX位置添加en-us 您可以通过使用负前瞻正则表达式(?!)来匹配不以所

我想在URL上添加
en us
语言代码。期望如下

当用户点击时,页面应该将用户重定向到 注意:我通过以下代码实现了这一点

location = / {
      rewrite ^ /en-us/ redirect;
  }
如何将客户重定向到以下场景

  • ,应重定向到
  • ,它不应该在url中附加额外的en us
  • ,它不应该在url中附加en-us
简单地说,我想要实现的是,如果url中没有
en-us
,那么我们应该在XX-XX位置添加en-us

您可以通过使用负前瞻正则表达式(
?!
)来匹配不以所需路径开头的位置

或者使用
if
块:

if ($request_uri !~ "^/en-(us|in)/")
{
    return 301 /en-us/$request_uri;
}
你看过报纸了吗?这里有许多类似的例子

这是我愿意做的(未经测试)


嗨,谢谢你的回答,效果很好。我又添加了1个场景(第3点)。有可能限制url附加吗?是的,让正则表达式也包含在其中。谢谢,它按预期工作。但还有一个问题,我不想在js和css URL中附加这种语言代码。结果是,页面未正确呈现。我希望这个重定向只适用于网站URL,而不是静态文件。如果我们有这样的选择,那就太好了。你可以和静态资产匹配,并且有一个空块
# Paths that don't start  with /en-us/ are redirected:

location ~ ^(?!/en-(us|in)/) {
    rewrite ^/(.*)$ /en-us/$1 redirect;
}
if ($request_uri !~ "^/en-(us|in)/")
{
    return 301 /en-us/$request_uri;
}
# Do not redirect /
location = / {
}

# Redirect everything else to /en-us/...
location / {
    rewrite ^/(.*)$ /en-us/$1 redirect;
}