0

我正在尝试配置从旧站点到新站点的 http 和 https 重定向。

根据重写指令文档:

如果替换字符串以 http:// 开头,则客户端将被重定向,并且任何进一步的重写指令都将终止。

我试图用 https 来达到同样的效果,但无济于事。这是我的服务器配置:

listen 80;
listen 443 ssl;
server_name mydomain.com

rewrite ^/path/resource(.*)$ $scheme://newdomain.com/newpath/resource$1 permanent;
...
return 301 http://newdomain.com/newpath/;

使用 http 我得到了我正在寻找的东西:如果我访问mydomain.com/path/resource我被重定向到newdomain.com/newpath/resource

但是,与 https 相同会将我重定向到http://newdomain.com/newpath/

打开了 rewrite_log,在这两种情况下,重写规则都匹配,但 https 协议不会停止进一步的规则处理。

我有一种感觉,要么我错过了一些非常明显的东西,要么我没有正确解决这个问题。如果可行的话,我完全不介意以任何不同的方式来做这件事。

你们中的任何人都知道如何使用 https 实现 http 重定向吗?

4

1 回答 1

0

我通常喜欢使用return而不是rewrite重定向,尝试将路径与位置块匹配

location ~ /path/resource(.*) {
    return 301 $scheme://newdomain.com/newpath/resource$1;
}

我认为这种方式你肯定知道不会有进一步的处理,因为它只有 1 行,试试吧,告诉我它是怎么回事。

PS:这样会维护$scheme请求的,requests tohttp://会被重定向到ahttp://并且https://会被重定向到https://

于 2013-08-02T22:03:41.440 回答