我在 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 的永久重定向。