HTTPS非www域名重定向至HTTPS www域名,子页面失效如何解决?
HTTPS非www子页面重定向失效的原因及修复
核心问题排查
你的规则对主域名有效但子页面无效,大概率是以下几个原因:
- 正则匹配不严谨:原规则里的
^example.com没有对.转义,也没加结束符$,.在正则中是通配符,会匹配exampleXcom这类不符合预期的域名,虽然主域名请求刚好命中,但子页面请求可能因为服务器解析逻辑导致匹配失效。 - 服务器配置限制:如果非www HTTPS站点的
AllowOverride未设置为All,.htaccess规则只会在根目录生效,子目录的请求不会触发该重定向规则。 - HTTPS站点配置问题:若非www域名的HTTPS证书未配置正确,浏览器访问子页面时会直接抛出安全错误,根本不会执行到.htaccess的重定向逻辑;或者非www站点的文档根目录与www站点不一致,子页面请求的文件路径不在当前.htaccess所在目录下。
修正后的规则
补全正则表达式,确保规则能覆盖所有非www请求:
RewriteEngine On # 精准匹配非www主域名,不区分大小写 RewriteCond %{HTTP_HOST} ^example\.com$ [NC] # 重定向到www域名的对应页面,301永久重定向 RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301]
额外检查项
- 确认非www域名的HTTPS证书配置正常,访问子页面时无安全报错。
- 检查服务器
VirtualHost配置,确保非www站点已开启AllowOverride All,且文档根目录与www站点一致。 - 子目录下没有其他.htaccess文件覆盖当前规则。
内容的提问来源于stack exchange,提问作者turagsuy
相关产品推荐
相关产品推荐

