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

How to add language code after domain name on nginx

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

当用户点击 http://example.com/, page should redirect users to http://example.com/en-us/ 注意:我是用下面的代码实现的。

location = / {
      rewrite ^ /en-us/ redirect;
  }

如何将客户重定向到以下场景

很简单,我想实现的是,如果url中没有en-us,那么我们应该在XX-XX处加上en-us。 http://example.com/XX-XX/contact

# Do nothing for assets (paths with a dot)

location ~ \. {
}

您可以使用否定先行正则表达式 (?!)

来匹配 不以所需路径 开头的位置
# Paths that don't start  with /en-us/ are redirected:

location ~ ^(?!/en-(us|in)/) {
    rewrite ^/(.*)$ /en-us/ redirect;
}

或使用 if 块:

if ($request_uri !~ "^/en-(us|in)/")
{
    return 301 /en-us/$request_uri;
}

你读过 rewrite documentation 了吗?那里有很多类似的例子。

这是我会做的(未经测试)。

# Do not redirect /
location = / {
}

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