如何将 https 请求重定向到 http

如何将 https 请求重定向到 http

假设我没有有效的证书来处理 https 会话,我想将所有 https 请求重定向到 http。不打开 https 会话可以吗?

答案1

假设我没有有效的证书来处理 https 会话,我想将所有 https 请求重定向到 http。不打开 https 会话可以吗?

不,这是不可能的,因为必须打开 HTTPS 会话才能让客户端接收 HTTP 重定向。

为了将 HTTPS 重定向到 HTTP,必须有某个东西在 HTTPS 端口上进行监听。您的客户端必须首先打开与提供 HTTPS 的端口的 SSL/TLS 连接,HTTP 流量通过 SSL/TLS 连接进行隧道传输,服务器将通过重定向到 HTTP 端口进行响应。这要求客户端和服务器建立 HTTPS 连接(即通过 SSL/TLS 的 HTTP)。

可以使用不同级别的“有效”证书来为 SSL 流量提供服务。我认为“自签名”证书是“有效的”,但这取决于您对“有效”的定义。建议使用由公认的证书颁发机构签名的证书,但对于实际的 SSL 流量而言,这是可选的。

您的问题很模糊,您没有解释“有效”是什么意思。请进一步说明。

答案2

不,假设“有效证书”是指您没有任何证书。

如果您的意思是您没有由受信任的第三方签名的证书并在网络浏览器上触发安全警告,那么您可以在显示警告后让每个人都在其浏览器中手动“接受”连接。

如果您正在寻找一种方法,既不需要由受信任的第三方签名的证书,又能够通过 SSL/HTTPS 连接发送信息以将客户端重定向到非加密的 HTTP 连接,那么您做不到。如果您可以建立一个“受信任”的连接,从而盲目地从服务器接受数据,而证书上没有受信任的签名,那么这首先就违背了 SSL 的目的。

答案3

在站点根目录下创建一个 .htaccess 文件并将其放入其中:

RewriteEngine On
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI}

并在目录部分(在虚拟主机或主配置中,添加AllowOverride all

相关内容