当前位置: 首页 > 知识库问答 >
问题:

将 HTTP 流量从 443 端口重定向到 SSL

卫俊力
2023-03-14

我有一个网站<code>www.example。com使用RewriteEngine将HTTP流量重定向到HTTPS:

<VirtualHost *:80>
    ServerAdmin webmaster@example.com
    ServerName example.com
    ServerAlias www.example.com

    DocumentRoot /var/www/example.com/
    ....

    RewriteEngine on
    RewriteCond %{HTTP_HOST}   ^example.com [NC]
    RewriteRule   ^(.*)$ https://www.example.com$1  [L]
    RewriteCond %{SERVER_PORT} ^80$
    RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
</VirtualHost>

我发现的问题是谷歌已经索引了这个URL:

http://www.example.com:443

给出此错误:

我尝试重定向流量,添加来自80和443虚拟主机的永久重定向:

<VirtualHost *:80>
    ...
    RewriteEngine on
    #RewriteCond %{HTTP_HOST}   ^example.com [NC]
    #RewriteRule   ^(.*)$ https://www.example.com$1  [L]
    #RewriteCond %{SERVER_PORT} ^80$
    RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
</VirtualHost>

<VirtualHost *:443>
    ...
    RewriteEngine on
    RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L]
</VirtualHost>

没有成功。什么是正确的方法来重定向从http://www.example.com:443(和衍生网页)到https://www.example.com的所有流量?

共有1个答案

韦锦程
2023-03-14

重定向所有流量的正确方法是什么http://www.example.com:443(和派生页面)到https://www.example.com?

没有这样的办法:

    < Li > < code > HTTP://www . example . com:443 表示与端口443建立TCP连接,然后直接说出HTTP < Li > < code > https://www . example . com:443 表示建立到端口443的TCP连接,进行TLS握手,然后在此TLS连接中使用HTTP。

正如您所看到的,两个访问都使用到同一端口的TCP连接,但一个向服务器发送HTTP,而另一个向同一服务器发送TLS(相同的主机和端口意味着相同的服务器)。虽然理论上可以区分HTTP请求(对于<code>http://...:443)和TLS握手的开始(对于https://...:443),并单独处理这些功能。服务器通常不支持这种功能,因为通常的方法是使用端口80进行http,使用端口443进行http

这意味着,服务器期望在端口 443 上进行 TLS 握手。服务器检测到它没有收到 TLS 握手,而是收到 HTTP 请求,并将“错误请求”消息返回给客户端,说明这是对此端口的错误请求类型。

 类似资料:
  • 我正在尝试将所有http流量重定向到https。我尚未在服务器上安装SSL证书,并且正在使用cloudflare灵活SSL选项。 以下代码工作文件 但这让http://www.example.com转向了https://example.com 但是当我添加这个 重定向所有非www网址,如http://example.com到https://example.com 网站没有加载,并给我一个错误,说浏

  • 我在设置从8080到端口443的重定向时遇到问题。 场景如下:我有一个负载均衡器,监听端口80和443。对端口80的所有请求都转发到负载均衡器后面主机上的端口8080。对端口443的所有请求都转发到负载均衡器后面主机上的端口8443。 请求端口时http://address.com,它在负载平衡器上使用端口80,在主机上使用端口8080,这里一切正常。 重定向现在应指向https://addres

  • 奇怪的问题。我使用FullCalendar向服务器上的endpoint发起ajax请求。终点是: 请注意,它是显式的HTTPS。但是,当我发起一个请求时(即当Fullcalendar发起一个请求时),我会得到一个301和一个到非HTTPSendpoint的重定向: 因为页面是通过HTTPS加载的,所以失败。 endpoint工作正常--当我将它加载到浏览器中时,我会得到预期的json输出(通过ht

  • 我有以下代码来配置Jetty服务器: 和 Application.Properties作为 但找不到与Jetty相当的东西。非常感谢任何指针。

  • 我们使用拉维5。要将http连接重定向到https,请使用中间件HttpsProtocol。 在我们的4个测试用例中,只有1个正确工作(最后一个重定向)。其他3种情况的中间件添加了url extra index.php。 http://www.aqualink.az/index.php ---

  • 请不要向我推荐超过173票的长而详细的帖子。这对我不起作用。我也试过很多其他的(1,2,3,4)。他们都给我太多的重定向或错误500。因此,我的问题是: 用我的电流。htaccess,这就是发生的情况: https://www.dukescasino.com/-工作完美 https://dukescasino.com/-重定向到上面的内容,这很好 下面的两个选项加载罚款,但它应该重定向到https