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;
}
如何将客户重定向到以下场景
- http://example.com/contact, should redirect to http://example.com/en-us/contact
- http://example.com/en-us/,它不应该在 url.
中附加额外的 en-us
- http://example.com/en-in/,它不应该在 url.
中附加 en-us
很简单,我想实现的是,如果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;
}
我想在 URL 上添加 en-us
语言代码。期望如下
当用户点击 http://example.com/, page should redirect users to http://example.com/en-us/ 注意:我是用下面的代码实现的。
location = / {
rewrite ^ /en-us/ redirect;
}
如何将客户重定向到以下场景
- http://example.com/contact, should redirect to http://example.com/en-us/contact
- http://example.com/en-us/,它不应该在 url. 中附加额外的 en-us
- http://example.com/en-in/,它不应该在 url. 中附加 en-us
很简单,我想实现的是,如果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;
}