![如何在服务器错误之前从 HTTPS 重定向到 HTTP?](https://linux22.com/image/595994/%E5%A6%82%E4%BD%95%E5%9C%A8%E6%9C%8D%E5%8A%A1%E5%99%A8%E9%94%99%E8%AF%AF%E4%B9%8B%E5%89%8D%E4%BB%8E%20HTTPS%20%E9%87%8D%E5%AE%9A%E5%90%91%E5%88%B0%20HTTP%EF%BC%9F.png)
我曾经运营过一个使用 SSL 证书的网站,但现在已经停止使用 SSL 证书。问题是该网站的大多数外部链接都使用 https:// 前缀。
我已尝试在 .htaccess 文件中将 https:// 重定向到 http://:
RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI}
但正如其他地方指出的那样,服务器似乎在激活重定向之前尝试检索证书。因此,在重定向完成之前会显示错误。错误要么是证书已过期的警告,要么是如果我删除证书签名请求,则会出现 SSL 收到的记录超出最大允许长度的错误。
有什么方法可以让传入链接正确重定向?
答案1
http和https的区别在于https请求是通过ssl加密连接发送的,浏览器在发送http请求之前必须先在浏览器和服务器之间建立ssl加密连接。
Https 请求实际上是通过 SSL 加密连接发送的 http 请求。如果服务器拒绝建立 SSL 加密连接,则浏览器将无法通过连接发送请求。浏览器和服务器将无法相互通信。浏览器将无法发送它想要访问的 URL,服务器也无法通过重定向到另一个 URL 进行响应。
所以这是不可能的。如果你想响应https链接,那么你需要一个ssl证书。
答案2
不,如果可以在没有真实证书的情况下从 https 重定向到 http,那将是一个重大的安全漏洞。
想象一下,犯罪分子能够以某种方式使银行安全服务器重定向到不安全的连接,而无需该网站的真实 https 证书,这将允许犯罪分子在用户不知情的情况下劫持连接。
我能看到的唯一解决方案是获取一个便宜的证书,然后从 HTTPS 站点(如果没有有效证书,用户就无法访问)对那些外部链接的常规站点进行正常重定向。
答案3
你应该在你的.htaccess中创建
ErrorDocument 500 http://anotherserer.com/errorPage.php