在控制器中将 HTTPS 重定向到 HTTP
Redirect HTTPS to HTTP in Controller
目前重定向代码重定向 HTTPS → HTTPS。我尝试用 die($url)
停止页面以查看 PROTOCOL 是否为 HTTP 并且它是正确的。但出于某种原因,当我尝试 PHP header 位置时,它重定向回 HTTPS 协议而不是 HTTP
因此,当我在我的 Zend 预调度方法中使用以下代码时
header('Location: http://www.example.com/blogs/');
它重定向到 https://www.example.com/blogs/
(HTTPS 协议)
而当我尝试
header("Refresh:0; url=http://www.example.com/blogs/");
它工作正常。意味着它重定向到 HTTP 协议。
注意:我需要在控制器内部执行此操作的原因是重定向取决于特殊的旗杆。我无法使用 Apache 配置。
我终于解决了这个问题。
问题是重定向 header 被负载均衡器覆盖了。所以有某种策略集,如果有人试图将 URL 从一种协议重定向到另一种协议,它将不允许导致我遇到的重定向循环。
在我的特定情况下,解决方案是需要发送的另一个自定义 header,它允许在负载均衡器中覆盖方案。
目前重定向代码重定向 HTTPS → HTTPS。我尝试用 die($url)
停止页面以查看 PROTOCOL 是否为 HTTP 并且它是正确的。但出于某种原因,当我尝试 PHP header 位置时,它重定向回 HTTPS 协议而不是 HTTP
因此,当我在我的 Zend 预调度方法中使用以下代码时
header('Location: http://www.example.com/blogs/');
它重定向到 https://www.example.com/blogs/
(HTTPS 协议)
而当我尝试
header("Refresh:0; url=http://www.example.com/blogs/");
它工作正常。意味着它重定向到 HTTP 协议。
注意:我需要在控制器内部执行此操作的原因是重定向取决于特殊的旗杆。我无法使用 Apache 配置。
我终于解决了这个问题。
问题是重定向 header 被负载均衡器覆盖了。所以有某种策略集,如果有人试图将 URL 从一种协议重定向到另一种协议,它将不允许导致我遇到的重定向循环。
在我的特定情况下,解决方案是需要发送的另一个自定义 header,它允许在负载均衡器中覆盖方案。