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

.htaccess配置异常:http://www.example.com无法跳转至HTTPS

解决HTTP到HTTPS及非www到www的统一跳转问题

我来帮你搞定这个跳转问题!你的.htaccess配置里有个小bug,导致http://www.example.com无法正确跳转到HTTPS——当请求是带www的HTTP地址时,第二个规则会错误地在域名前再添加一个www.,最终生成https://www.www.example.com这种无效地址,浏览器自然不会正确跳转。

修正后的.htaccess配置

直接替换成下面的代码,就能实现所有请求(不管是http://example.com还是http://www.example.com)统一跳转到https://www.example.com:

RewriteBase /
RewriteEngine on

# 统一跳转至 https://www.example.com
# 条件:要么请求不是HTTPS(适配AWS环境的X-Forwarded-Proto头),要么域名不带www
RewriteCond %{HTTP:X-Forwarded-Proto} !https [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

# 静态文件/目录直接访问,不转发到后端(保留你原来的规则)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [L]

关键修正点说明

  1. 合并跳转逻辑:用[OR]连接两个条件,只要请求是HTTP协议,或者域名不带www,就触发跳转,避免了多次跳转的问题。
  2. 固定跳转目标:直接写死目标地址https://www.example.com/$1,彻底避免了%{HTTP_HOST}带来的重复www问题。
  3. 适配AWS环境:依然用X-Forwarded-Proto判断真实请求协议,因为AWS的负载均衡/CloudFront通常会在前端处理SSL,后端服务器拿到的是HTTP请求,这个头能帮我们识别用户实际用的是HTTP还是HTTPS。

额外注意事项

  • 修改完配置后,一定要清除浏览器缓存或者用隐私模式测试,因为301永久跳转是会被浏览器缓存的,之前的错误跳转记录可能还在生效。
  • 确认AWS环境中已经正确传递X-Forwarded-Proto头:如果用的是ELB,要在负载均衡的监听配置里开启“转发客户端IP和HTTP头”;如果是CloudFront,要在行为设置中确保X-Forwarded-Proto头被转发到源站。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:11:43