我想将 http 重定向到 https 并通过一次重定向删除 nginx 中的尾部斜杠。我今天的解决方案如下:
server {
listen 80;
server_name www.example.com
rewrite ^/(.*)/$ /$1 permanent;
return 301 https://$host$request_uri;
}
这个解决方案的问题是它会给出两个重定向
给出两个重定向:
http://www.example.com/test/ --> http://www.example.com/test
http://www.example.com/test --> https://www.example.com/test
是否有可能制定一个解决方案,让您只能获得一个像下面这样的重定向?
http://www.example.com/test/ --> https://www.example.com/test
当我查看 nginx 重写和返回方法的文档时,我觉得应该可以以某种方式通过一次重写来完成它:
rewrite ^/(.*)/$ https://$host$request_uri permanent;
但我尝试过的任何东西都没有给我正确的结果。
最佳答案
您已经拥有正确解决方案的组成部分。使用方案和主机名以及捕获来构建目标 URL:
rewrite ^/(.*)/$ https://$host/$1 permanent;
关于redirect - Nginx 将 http 重定向到 https 并通过一次重定向删除尾部斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43911951/