无法通过.htaccess将www域名重定向至非www域名
解决www HTTPS跳转404问题
你的问题核心是当前的.htaccess规则只处理了**HTTP(80端口)的请求跳转,完全没覆盖HTTPS(443端口)**的www请求,而且大概率服务器上没正确绑定www.example.com的HTTPS站点,导致直接返回404,规则根本没机会生效。
步骤1:先确认服务器基础配置
- 确保
www.example.com已经和非www域名绑定到同一个站点目录 - 确认
www.example.com有有效的SSL证书(可与非www域名共用通配符证书或SAN证书)
只有这两步搞定,HTTPS的www请求才会走到你的.htaccess规则,否则服务器会直接返回404。
步骤2:替换.htaccess规则
把你现有的规则替换成下面的,同时覆盖HTTPS强制和www转非www的需求:
# 强制HTTPS并将www域名跳转至非www RewriteCond %{HTTP_HOST} ^www\. [NC,OR] RewriteCond %{HTTPS} off RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC] RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L]
规则说明:
- 第一个条件匹配所有www开头的域名,第二个条件匹配HTTPS未开启的请求,两者满足其一就触发跳转
- 第三个条件提取去掉www前缀的主域名(比如从
www.example.com提取example.com) - 最后统一重定向到
https://主域名+请求路径,R=301是永久重定向,L表示终止后续规则执行
注意事项
- 测试前一定要清空浏览器缓存,因为301重定向会被浏览器长期缓存,旧的错误跳转可能干扰测试
- 确认Apache服务器已经开启
mod_rewrite模块 - 如果是Nginx服务器,.htaccess不生效,需要在Nginx配置文件里写对应规则
内容的提问来源于stack exchange,提问作者JohnK
相关产品推荐
相关产品推荐

