.htaccess重定向次数过多求助:将example.com转向https://example.com
解决重定向次数过多的问题
嘿,你的.htaccess规则里藏着几个小问题,正是它们导致了浏览器提示的重定向循环,我来帮你拆解并修正:
问题出在哪?
- 语法错误导致条件始终成立:第二个RewriteCond
%{HTTP_HOST}!^www\.少了变量和正则模式之间的空格!Apache会把%{HTTP_HOST}!^www\.当成一个不存在的服务器变量,结果这个条件会一直判定为真——哪怕你已经跳转到https://example.com,规则还是会反复触发重定向,形成死循环。 - 多余且写错的条件:第三个条件
%{HTTP_HOST} ^example.com\.com$ [NC]明显是笔误(多了个.com),而且对你要实现的重定向需求来说完全多余,留着反而可能添乱。
修正后的.htaccess规则
把你现有的代码替换成下面这段:
# 强制跳转到HTTPS的example.com(去掉www) RewriteCond %{HTTPS} off [OR] RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC] RewriteRule ^ https://example.com%{REQUEST_URI} [R=301,L,NE]
规则说明
- 第一个条件
%{HTTPS} off:抓所有HTTP(非HTTPS)的请求; - 第二个条件
%{HTTP_HOST} ^www\.example\.com$ [NC]:抓所有以www.example.com为域名的请求([NC]表示不区分大小写); [OR]表示满足任意一个条件就执行重定向:把请求永久跳转到https://example.com加上原请求的路径(%{REQUEST_URI});[L]表示这是最后一条规则,避免后续规则干扰;[NE]表示不转义URL里的特殊字符,保证路径正确。
额外要注意的点
- 先确认你的服务器已经正确配置了HTTPS(SSL证书有效且安装到位),不然规则对了也可能访问出问题;
- 测试前一定要清空浏览器缓存,因为301重定向会被浏览器缓存,旧的错误规则可能还会生效;
- 如果你的站点还有其他重定向规则,把这条放在最前面,避免规则冲突。
内容的提问来源于stack exchange,提问作者vicky
相关产品推荐
相关产品推荐

