将所有流量重定向至HTTPS非WWW域名的.htaccess配置问题
解决HTTPS www域名跳转至非www的问题
我明白你的困扰——已经搞定了HTTP到HTTPS的跳转,但https://www.example.com就是不肯转向https://example.com。咱们来一步步解决这个问题:
当前配置的问题
你现有的规则只处理了HTTP协议转HTTPS的情况,当用户访问https://www.example.com时,%{HTTPS}的值是on,这条规则根本不会触发,自然不会执行跳转。
完整的解决方案
你需要添加一条专门处理www子域名的规则,并且调整规则顺序,确保所有场景都被覆盖。替换你的现有配置为以下内容:
<IfModule mod_rewrite.c> RewriteEngine On # 规则1:将所有www域名(无论HTTP/HTTPS)跳转至非www的HTTPS RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC] RewriteRule ^(.*)$ https://example.com/$1 [L,R=301,NE] # 规则2:将非www的HTTP请求跳转至HTTPS RewriteCond %{HTTPS} !=on RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE] </IfModule>
规则解释
- 规则1:通过
RewriteCond匹配主机名为www.example.com的请求([NC]表示不区分大小写),然后将所有请求路径重定向到https://example.com/$1($1保留原请求的路径)。这条规则会同时处理http://www.example.com和https://www.example.com的跳转。 - 规则2:保留你原来的逻辑,处理非www的HTTP请求,确保它们跳转到对应的HTTPS地址。
注意事项
- 测试阶段建议把
R=301改成R=302(临时重定向),避免浏览器缓存错误的重定向规则,确认所有跳转正常后再改回301(永久重定向)。 - 确保你的服务器已经启用了
mod_rewrite模块,并且网站根目录的AllowOverride设置为All(允许.htaccess文件生效)。
内容的提问来源于stack exchange,提问作者slarge
相关产品推荐
相关产品推荐

