全站强制HTTPS但指定目录需强制HTTP的.htaccess配置求助
Got it,我来帮你搞定这个问题!你的现有配置只处理了非HTTPS转HTTPS的单向跳转,但完全没考虑反向规则——也就是当用户用HTTPS访问excluded_directory时,没有强制跳转到HTTP,这就是为什么这个目录还能通过HTTPS访问的原因。
完整解决方案
直接在根目录的.htaccess里添加双向规则即可,不需要依赖子目录的二级.htaccess(大概率是服务器配置限制了子目录规则生效,或者被根目录规则覆盖了)。
最终配置代码
RewriteEngine On # 规则1:强制除excluded_directory外的所有请求使用HTTPS RewriteCond %{HTTPS} !=on RewriteCond %{REQUEST_URI} !^/excluded_directory/ RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [L,R=301] # 规则2:强制excluded_directory目录下的所有请求使用HTTP RewriteCond %{HTTPS} =on RewriteCond %{REQUEST_URI} ^/excluded_directory/ RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [L,R=301]
关键细节解释
- 第一条规则:仅当请求不是HTTPS,且路径不包含
/excluded_directory/时,跳转到HTTPS版本。把%{REQUEST_URI}改成/$1是为了避免路径重复,适配不同服务器的配置逻辑。 - 第二条规则:这是你之前缺失的核心!当请求是HTTPS,且路径包含
/excluded_directory/时,直接跳转到HTTP版本,彻底禁止该目录的HTTPS访问。
测试前必做
别忘了清空浏览器缓存!因为301重定向是永久缓存的,旧的缓存记录会干扰你的测试结果,导致规则看起来没生效。
内容的提问来源于stack exchange,提问作者Josh N
相关产品推荐
相关产品推荐

