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

.htaccess配置:HTTP转HTTPS与泛域名重定向共存问题

解决方案:让HTTPS重定向与泛域名代理规则共存

问题根源

  1. 原HTTPS重定向规则的条件错误(%{HTTP_HOST} off),无法正确识别HTTP请求;
  2. 规则顺序颠倒,泛域名代理规则在HTTPS重定向之前执行,导致HTTP请求直接被代理到HTTP目标地址,最终被浏览器或服务器强制转为HTTPS目标,跳过了泛域名的HTTPS跳转;
  3. 泛域名代理目标使用HTTP协议,存在混合内容风险,也不符合当前HTTPS优先的要求。

正确的.htaccess配置

# 1. 优先将所有HTTP请求重定向到同域名的HTTPS(永久重定向)
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# 2. 处理泛域名代理:将非www的泛域名请求代理到主域名指定路径
RewriteCond %{HTTP_HOST} !^www\.example\.com$
RewriteCond %{HTTP_HOST} ^(.+)\.example\.com$
RewriteRule ^ https://example.com/account/company/%1%{REQUEST_URI} [P,L,QSA]

# 3. 前端控制器:转发不存在的文件/目录请求到index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

配置说明

  • HTTPS重定向:通过%{HTTPS} off准确识别HTTP请求,重定向到同域名的HTTPS地址,[L]确保执行完此规则后停止后续规则,R=301标记为永久重定向,有利于搜索引擎优化。
  • 泛域名代理:先排除www.example.com,再匹配泛域名前缀(如name),将请求代理到HTTPS的目标路径,%{REQUEST_URI}保留原请求的路径参数,QSA确保查询参数不会丢失,[P]启用反向代理,[L]停止后续规则。
  • 前端控制器:仅当请求的文件或目录实际不存在时,才转发到index.php,适配大多数PHP框架的路由机制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 04:32:41