我正在尝试向我的NGINX配置添加一个简单的规则,以便始终使用语言后缀www.example.com/en/重写根URL www.example.com.我已经试过了:

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;
    }

    ...
}

最佳答案
有两种处理重定向的正常方法:

使用重写规则

server {
    ...
    rewrite ^/$/en/ permanent;    
    ...
}

请注意,rewrite rules不必是绝对URL,但是如果要是绝对URL,则它们需要包括协议重写/ x https://example.com/y;.

无需将这样的重写规则放在位置块中.

使用位置块返回30倍

使用位置块需要对网址使用完全匹配:

server {
    ...
    location = / {
        return 301 /en/;
    }
    ...
}

使用=表示规则将仅匹配对域根的请求,否则rules of location block precedence表示位置块将是所有请求的默认值. Return用于发出301(永久)重定向.

dawei

【声明】:丽水站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。