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

Apache配置htaccess规则实现指定HTTP地址不跳转HTTPS

首先说明你之前规则失效的核心原因:
Apache的%{HTTP_HOST}变量仅存储请求的域名部分,不包含http/https协议前缀,也没有路径相关的斜杠字符,所以你编写的带http:\\前缀的匹配规则完全无法命中任何请求,自然无法实现预期逻辑。

正确的.htaccess重写规则

RewriteEngine On

# 放行http协议访问裸域名example.com的请求,不触发重定向
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^ - [L]

# 放行已经是目标地址https://www.example.com的请求,避免死循环
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^ - [L]

# 其余所有请求统一重定向到HTTPS的www域名版本
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301,NE]

规则说明

  • NC参数表示匹配域名时不区分大小写
  • 前两段规则会直接跳过你要求保留的http://example.com场景、以及已经访问到目标地址的场景,不会触发跳转
  • 最后一条规则命中所有剩余请求,统一跳转至目标地址,NE参数用于避免URL中的特殊字符被意外转义
  • 如果你还在调试阶段,可以先把R=301改为R=302使用临时重定向,避免浏览器缓存旧规则导致调试异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 06:06:03