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

标签 redirect nginx url-rewriting

我想将 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/

相关文章:

python - 如何获取 HTTP 重定向目标的 URL?

apache - 将特定 URL 重定向到带有 SEO 名称的 SSL 版本

.Net 5 AWS nginx Linux 弹性 beanstalk 改变 client_max_body_size

php - Nginx 位置配置(子文件夹)

Spring Web Flow 和 Url Rewrite Filter——清理 URL

php - 子域上 GET 参数的 Mod-rewrite

apache - 如何停止重写规则?

java - JSF 在页面加载时重定向

php - 通过 .htaccess 子域传递的 GET 参数未被 php 读取

nginx - 如何让我的 Dreamweaver 站点使用我的 nginx docker 容器作为 Web 测试服务器?