NGINX用语言后缀重写根url
我试图在我的NGINX配置中添加一个简单的规则,即根urlNGINX用语言后缀重写根url,nginx,Nginx,我试图在我的NGINX配置中添加一个简单的规则,即根urlwww.example.com总是用语言后缀www.example.com/en/重写。我试过这个: server { listen 80; server_name www.example.com; location / { rewrite ^$ www.example.com/en/ permanent; } ... } 但是没有运气。我哪里做错了?此外,是否可能存在这样一种
www.example.com
总是用语言后缀www.example.com/en/
重写。我试过这个:
server {
listen 80;
server_name www.example.com;
location / {
rewrite ^$ www.example.com/en/ permanent;
}
...
}
但是没有运气。我哪里做错了?此外,是否可能存在这样一种情况:NGINX检查是否有/en/
后缀,如果没有,则添加一个后缀
编辑
因此,我只差一个角色就达到了我最初的目标:
server {
listen 80;
server_name www.example.com;
location / {
# needed the / in between the anchor tags
rewrite ^/$ www.example.com/en/ permanent;
}
...
}
有两种处理重定向的正常方法: 使用重写规则 请注意,不需要是绝对URL,但如果它们是绝对URL,则需要包含协议
rewrite/xhttps://example.com/y;代码>
没有必要将这样的重写规则放在位置块中
使用定位块+返回30x
使用位置块需要使用与url完全匹配的url:
server {
...
location = / {
return 301 /en/;
}
...
}
使用=
意味着规则将只匹配域根的请求,否则意味着位置块将是所有请求的默认值。用于发出301(永久)重定向。您可以使用。另外,这看起来和你的很相似。我认为我不需要使用语言模块。我的首要任务是将根url/
重写为/en/
。目前,我很高兴没有后缀的url返回404。在我链接的答案中,有一些例子说明了如何做到这一点。我问题第一部分的答案非常简单-只需要/
在^
和$
锚之间插入/{…}
不表明这一点?为简单起见,如果您重定向到同一个方案和主机,您可以忽略这两个方案和主机,只需执行返回301/en/代码>
server {
...
location = / {
return 301 /en/;
}
...
}