Nginx https重定向-停止进一步的规则处理
我正在尝试配置从旧站点到新站点的http和https重定向 根据重写指令文档: 如果替换字符串以http://开头,则客户端将 被重定向,任何进一步的重写指令都将终止 我试图用https实现同样的效果,但没有效果。 这是我的服务器配置:Nginx https重定向-停止进一步的规则处理,https,nginx,rewrite,Https,Nginx,Rewrite,我正在尝试配置从旧站点到新站点的http和https重定向 根据重写指令文档: 如果替换字符串以http://开头,则客户端将 被重定向,任何进一步的重写指令都将终止 我试图用https实现同样的效果,但没有效果。 这是我的服务器配置: listen 80; listen 443 ssl; server_name mydomain.com rewrite ^/path/resource(.*)$ $scheme://newdomain.com/newpath/resource$1 perman
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也会将我重定向到
我已登录重写,在这两种情况下,重写规则都匹配,但https协议不会停止进一步的规则处理
我有一种感觉,要么我错过了一些非常明显的东西,要么我没有正确处理这个问题。如果可行的话,我不介意用任何不同的方式来做
你们中有人知道如何用https实现http重定向吗?我通常喜欢使用
返回
而不是重写
重定向,请尝试将路径与位置块匹配
location ~ /path/resource(.*) {
return 301 $scheme://newdomain.com/newpath/resource$1;
}
我想这样你肯定知道不会有进一步的处理,因为它只有一行,试试看,告诉我它是怎么回事
PS:这将维护请求的
$scheme
,对http://
的请求将被重定向到http://
和https://
的请求将被重定向到https://
我已经尝试过这一点,并且无论原始url是http还是https,我总是被重定向到http。您可以编写您使用的新配置吗?服务器{listen 80;listen 443 ssl;ssl证书…crt文件;ssl证书…密钥…密钥文件;服务器名称mydomain.com www.mydomain.com;root…;location~/path/resource.php(.*){返回301$scheme://newdomain.com/newpath/resource$1; }
我不知道这一点,但我通常会创建两个不同的服务器,一个用于ssl,另一个不用于ssl。我尝试在没有listen 80;的情况下使用相同的行为。在与工作伙伴简短交谈后,我开始怀疑是否可以将secure 301从具有证书的域重定向到具有另一证书的域L