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

如何将全站从HTTP重定向到HTTPS并排除指定文件?

解决HTTP到HTTPS重定向时排除特定文件的问题

我明白你现在的困扰——想把整个网站都转到HTTPS,但唯独那个currentversion.txt文件得保留HTTP访问,之前尝试反向重定向还触发了无限循环对吧?其实问题出在重定向的顺序和逻辑上,咱们换个思路就能搞定。

核心问题是:如果先把所有HTTP请求都转到HTTPS,再试图把那个文件转回来,就会触发第一轮的重定向规则,形成死循环。所以正确的做法是在执行HTTPS重定向之前,先把这个文件排除在外。

下面是修改后的.htaccess规则,你可以直接替换原来的代码:

RewriteEngine On

# 排除指定文件,只对其他请求执行HTTP→HTTPS+www的重定向
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !^/phone/version/currentversion.txt$ [NC]
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# 处理已为HTTPS但不带www的请求,统一转到带www的HTTPS
RewriteCond %{HTTPS} on
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule .* https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

咱们来拆解一下逻辑:

  • 第一条规则:只有当请求是HTTP协议,并且请求路径不是/phone/version/currentversion.txt时,才会被重定向到带www的HTTPS地址。这样那个文件的HTTP请求就会被直接放行,不会被转到HTTPS,自然也就不会有后续的反向重定向循环了。
  • 第二条规则:专门处理已经是HTTPS但域名不带www的情况,确保所有HTTPS请求都统一到带www的域名下(这条规则不需要排除那个文件,因为如果有人访问它的HTTPS版本,也不会影响下载,当然如果你希望强制它只能用HTTP,也可以再加一条规则,但通常没必要)。

最后提醒一下:因为用了R=301永久重定向,浏览器会缓存旧的重定向规则,测试前记得清除浏览器缓存,或者用隐私窗口测试,避免缓存影响结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:31:07