You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求解决.htaccess将www子域名重定向至非www子域名问题

解决HTTPS下www.sub.domain.com重定向到非www子域名的问题

嘿,我之前也踩过子域名重定向的坑,尤其是带HTTPS的场景,常规规则经常因为服务器配置或者SSL的问题失效。给你几个针对性的解决办法,按顺序试应该能搞定:

方案1:精准匹配子域名的重定向规则

把这段代码放在你的.htaccess文件最顶部(规则顺序很重要,要放在其他Rewrite规则之前,避免被干扰):

RewriteEngine On
# 匹配所有访问www.sub.domain.com的请求(忽略大小写)
RewriteCond %{HTTP_HOST} ^www\.sub\.domain\.com$ [NC]
# 永久重定向到https://sub.domain.com,保留原路径和参数
RewriteRule ^(.*)$ https://sub.domain.com/$1 [L,R=301]

小提示:测试阶段可以先用R=302临时重定向,确认生效后再改回R=301(永久重定向对SEO更友好)。

方案2:先强制HTTPS再处理www重定向

如果你的服务器同时接受HTTP和HTTPS请求,建议先统一转到HTTPS,再处理www的问题,避免两种规则冲突:

RewriteEngine On
# 把所有HTTP请求强制转到HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [L,R=301]

# 再处理www.sub.domain.com到非www的重定向
RewriteCond %{HTTP_HOST} ^www\.sub\.domain\.com$ [NC]
RewriteRule ^(.*)$ https://sub.domain.com/$1 [L,R=301]

注意:确保你的SSL证书同时覆盖www.sub.domain.com和sub.domain.com,否则会出现证书错误,导致重定向直接失败。

方案3:检查Apache虚拟主机配置

有时候.htaccess的规则会被Apache的虚拟主机配置覆盖,你需要确认在443端口的虚拟主机块里允许.htaccess生效:

<VirtualHost *:443>
    ServerName sub.domain.com
    ServerAlias www.sub.domain.com
    # 必须开启AllowOverride All,否则.htaccess规则不会生效
    AllowOverride All
    # 下面是你的SSL证书配置(按需填写)
    SSLCertificateFile /path/to/your/cert.crt
    SSLCertificateKeyFile /path/to/your/private.key
    SSLCertificateChainFile /path/to/your/chain.crt
</VirtualHost>

很多新手会忽略这个点——如果虚拟主机里没开AllowOverride All,.htaccess写再多规则都是白搭。

验证重定向是否生效

改完配置后,你可以用两种方式验证:

  • 打开浏览器开发者工具的「Network」面板,访问https://www.sub.domain.com,看请求状态码是否是301 Moved Permanently,且Location指向https://sub.domain.com;
  • 用命令行工具curl测试:
    curl -I https://www.sub.domain.com
    
    返回结果里的HTTP/1.1 301 Moved Permanently和Location: https://sub.domain.com/就是生效的标志。

内容的提问来源于stack exchange,提问作者Ava Template

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:24:17