NGINX用语言后缀重写根url

NGINX用语言后缀重写根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; } ... } 但是没有运气。我哪里做错了?此外,是否可能存在这样一种

我试图在我的NGINX配置中添加一个简单的规则,即根url
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/;
    }
    ...
}