Apache:当URL包含特定路径时禁用HTTPS重定向的配置问题
解决虚拟主机重定向排除子目录/文件的问题
你的问题出在第二个RewriteCond的匹配规则上——当前规则只精确匹配了/downloads/software/installer/这个目录本身,没有覆盖该路径下的所有子文件和子文件夹。我们只需要调整匹配模式,让它匹配所有以这个路径开头的请求即可。
修改后的完整配置
RewriteEngine On # 排除ACME挑战路径 RewriteCond %{REQUEST_URI} !^/\.well\-known/acme\-challenge/ # 排除/downloads/software/installer/及其下所有子资源 RewriteCond %{REQUEST_URI} !^/downloads/software/installer/ # 以下是原有的重定向条件 RewriteCond %{HTTPS} off [OR] RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC] RewriteRule ^ https://www.%1%{REQUEST_URI} [L,NE,R=301]
关键修改说明
把原来的RewriteCond %{REQUEST_URI} !/downloads/software/installer/改成了RewriteCond %{REQUEST_URI} !^/downloads/software/installer/:
^符号表示“以指定字符串开头”,这样所有以/downloads/software/installer/开头的请求(包括/downloads/software/installer/file.exe、/downloads/software/installer/subdir/这类子资源)都会被排除在重定向规则之外。- 保留
!符号表示“否定匹配”,也就是满足这个条件的请求不会触发后续的重定向。
验证效果
修改配置后重启Apache(或对应的Web服务),测试以下场景:
http://example.de/downloads/software/installer/→ 保持HTTP访问,不重定向http://example.de/downloads/software/installer/test.txt→ 保持HTTP访问,不重定向http://example.de/downloads/software/installer/subdir/→ 保持HTTP访问,不重定向- 其他路径(比如
http://example.de/about)→ 正常重定向到https://www.example.de/about
内容的提问来源于stack exchange,提问作者user15282016
相关产品推荐
相关产品推荐

