配置.htaccess实现SSL下www到非www重定向遇阻求助
解决HTTPS www到非www的重定向问题及内容损坏错误
老兄,我看你这问题出在.htaccess的规则逻辑上,原配置里有几个明显的错误,导致重定向失效还触发了内容损坏错误。给你一套靠谱的配置,再给你掰扯清楚为啥原来的不行:
修正后的完整.htaccess配置
# 启用Rewrite引擎(如果服务器未默认开启的话) RewriteEngine On # 规则1:处理https://www.example.com → https://example.com RewriteCond %{HTTPS} on RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ https://%1/$1 [R=301,L] # 规则2:处理所有HTTP请求(http://www.example.com和http://example.com)→ https://example.com RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
原配置的问题分析
你原来的规则里有两个致命错误:
- 错误的HTTP_HOST判断:
RewriteCond %{HTTP_HOST} ^http\.(.*)$ [NC]完全无效,因为%{HTTP_HOST}变量只包含纯域名部分(比如www.example.com),永远不会带有http://前缀,这个条件永远不满足,导致整个规则直接被跳过。 - 逻辑冲突的条件组合:你把
%{HTTPS} off、HTTP_HOST是http.开头、HTTP_HOST是www.开头三个条件用AND逻辑绑定,这三个条件根本不可能同时满足,所以规则完全没生效,反而可能和服务器默认规则触发重定向循环,导致浏览器提示「Corrupted Content Error」。
额外注意事项
- 测试阶段建议把
R=301改成R=302(临时重定向),确认所有重定向逻辑正常后再改回301永久重定向,避免浏览器缓存错误的重定向规则。 - 确保你的Apache服务器已经启用了
mod_rewrite模块,否则这些Rewrite规则完全不起作用。 - 修改配置后,一定要清除浏览器缓存再测试,之前的错误重定向可能已经被浏览器缓存下来了。
内容的提问来源于stack exchange,提问作者Premox
相关产品推荐
相关产品推荐

