我正在尝试将旧网站的http和https重定向配置为新网站。
根据重写指令docs:
如果替换字符串以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重定向?
答案 0 :(得分:0)
我通常希望使用return
代替rewrite
进行重定向,尝试将路径与位置块匹配
location ~ /path/resource(.*) {
return 301 $scheme://newdomain.com/newpath/resource$1;
}
我认为这种方式你肯定知道不会有进一步的处理,因为它只有1行,试一试并告诉我它是怎么回事。
PS:这将保留请求的$scheme
,对http://
的请求将重定向到http://
,https://
将重定向到https://