You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

HTACCESS配置HTTPS转HTTP失效:非WWW域名重定向报错求助

解决HTTPS到HTTP重定向失败(ERR_CONNECTION_REFUSED)的问题

首先咱们拆解下你遇到的核心问题:ERR_CONNECTION_REFUSED 这个报错不是重写规则的锅,而是你的服务器根本没在HTTPS默认端口(443)监听 example.com(裸域)的请求。当用户访问 https://example.com 时,服务器直接拒绝了连接,重写规则连执行的机会都没有。

接下来分两步彻底解决:

1. 先配置SSL虚拟主机,让服务器接受裸域的HTTPS请求

你需要在Apache配置里添加一个覆盖 example.com 和 www.example.com 的SSL虚拟主机——哪怕这个主机只用来做重定向。如果你的SSL证书只支持其中一个域名,建议换成包含两个域名的SAN证书,避免浏览器先弹出证书错误影响体验。

示例配置代码:

<VirtualHost *:443>
    ServerName example.com
    ServerAlias www.example.com

    # 填写你的SSL证书路径
    SSLEngine on
    SSLCertificateFile /path/to/your/certificate.crt
    SSLCertificateKeyFile /path/to/your/private.key
    SSLCertificateChainFile /path/to/your/chain.crt # 可选,根据证书要求添加

    # 开启重写引擎
    RewriteEngine On
</VirtualHost>

2. 修正重写规则,精准实现你的需求

根据你的描述,我分两种常见场景给出适配规则:

场景A:保留原域名的WWW状态,将所有HTTPS重定向到对应HTTP版本

比如:

  • https://www.example.com/page02.php → http://www.example.com/page02.php
  • https://example.com/page02.php → http://example.com/page02.php

在上面的SSL虚拟主机配置里添加这条规则:

RewriteCond %{HTTPS} on
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [L,R=301]

场景B:统一将所有HTTPS请求重定向到HTTP的WWW版本

比如:

  • https://www.example.com/page02.php → http://www.example.com/page02.php
  • https://example.com/page02.php → http://www.example.com/page02.php

用这条更简洁的规则:

RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]

最后几个注意点

  • 测试阶段可以先用 R=302 临时重定向,避免浏览器缓存错误规则;确认没问题后再换成 R=301 永久重定向(对SEO更友好)。
  • 修改配置后记得重启Apache服务生效:sudo systemctl restart apache2(根据你的服务器系统调整命令)。
  • 检查服务器防火墙是否允许443端口的入站请求,否则也会出现连接拒绝的问题。

内容的提问来源于stack exchange,提问作者Craig

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:51:27