Nginx 将 http 重定向到 https 并通过一次重定向删除尾部斜杠

Ten*_*aru 5 redirect nginx url-rewriting

我想将 http 重定向到 https 并通过一次重定向删除 nginx 中的尾部斜杠。我今天的解决方案如下:

server {
    listen 80;
    server_name www.example.com
    rewrite ^/(.*)/$ /$1 permanent;
    return 301 https://$host$request_uri;
}
Run Code Online (Sandbox Code Playgroud)

这个解决方案的问题是它会给出两个重定向

给出两个重定向:

http://www.example.com/test/ --> http://www.example.com/test
http://www.example.com/test --> https://www.example.com/test
Run Code Online (Sandbox Code Playgroud)

是否有可能制定一个解决方案,让您只能获得一个像下面这样的重定向?

http://www.example.com/test/ --> https://www.example.com/test
Run Code Online (Sandbox Code Playgroud)

当我查看 nginx 重写和返回方法的文档时,我觉得应该可以以某种方式通过一次重写来完成它:

rewrite ^/(.*)/$ https://$host$request_uri permanent;
Run Code Online (Sandbox Code Playgroud)

但我尝试过的任何东西都没有给我正确的结果。

Ric*_*ith 4

您已经拥有正确解决方案的组成部分。使用方案和主机名以及捕获来构造目标 URL:

rewrite ^/(.*)/$ https://$host/$1 permanent;
Run Code Online (Sandbox Code Playgroud)