nginx 中的等效重写规则是什么

nginx 中的等效重写规则是什么

我在 Apache2 中有这个重写规则

重写规则国家/美国[/]*$ /en/country/united-states [L,R=301,NC]

我曾尝试在 nginx 中构建一个等效的重写规则,如下所示

服务器 {
重写 ^country/usa[/]*$ /en/country/united-states 最后;
#虚拟主机剩余部分
}

但这不起作用 :( 知道怎么做吗?
谢谢你的帮助

答案1

类似于下面的代码应该可以完成这项工作:

server {
    ...
    rewrite ^/country/usa$ /en/country/united-states permanent;
}

这将仅重定向/country/usa/country/usa/带有301 Moved Permanently状态。另一种方式选项是

server {
    ...
    rewrite ^/country/usa([/])?(.*)$ /en/country/united-states/$2 permanent;
}

这会将 和 之后的所有内容(包括 )重定向/country/usa到新位置。
例如/country/usa/testing将转到/en/country/united-states/testing

答案2

http://nginx.org/en/docs/http/ngx_http_rewrite_module.html#rewrite

> redirect — 返回代码为 302 的临时重定向;当替换字符串不以“http://”或“https://”开头时使用;

permanent — 返回代码为 301 的永久重定向。

相关内容