全站级HTaccess配置:非WWW转WWW及HTTP转HTTPS重定向问题
解决全站非WWW转WWW+HTTP转HTTPS重定向问题
你的现有规则分开处理域名和协议跳转,不仅会产生两次301重定向,还容易导致子页面的路径匹配失效。我们可以把两个条件合并,一次性完成跳转,确保所有页面(包括根域名和子页面)都能正确生效:
RewriteEngine On # 匹配非WWW域名 或者 HTTP协议的请求 RewriteCond %{HTTP_HOST} !^www\. [NC,OR] RewriteCond %{HTTPS} off # 统一重定向到HTTPS的WWW域名,保留完整请求路径 RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301]
规则细节解释:
RewriteEngine On:开启URL重写引擎,这是所有Rewrite规则生效的前提RewriteCond %{HTTP_HOST} !^www\. [NC,OR]:匹配任何不以www.开头的域名,NC表示不区分大小写,OR标记让这条条件和下一条满足任意一个即可触发重定向RewriteCond %{HTTPS} off:匹配使用HTTP协议的请求(即HTTPS未开启的状态)RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301]:捕获完整的请求路径(包括/blog这类子页面路径),拼接到目标HTTPS域名后;L表示这是最后一条规则,匹配后不再执行后续规则;R=301表示永久重定向,对SEO更友好
额外注意事项:
- 确保你的服务器已正确配置HTTPS证书,否则HTTPS访问会出现安全报错
- 测试阶段可以先用
R=302临时重定向,确认跳转逻辑无误后再改成R=301永久重定向 - 记得把
example.com替换成你自己的实际域名
内容的提问来源于stack exchange,提问作者Laydon
相关产品推荐
相关产品推荐

