如何用.htaccess移除WWW并实现无WWW的HTTPS重定向?附尝试代码
嘿,我瞅见你在折腾.htaccess的重定向规则,之前的代码里有俩拼写小失误(把subdomain写成了ubdomain,domain写成了doamin),而且只覆盖了www.subdomain.domain.io这一种情况,没考虑到HTTP协议的非www请求,给你个更全面靠谱的方案:
正确的无WWW+HTTPS重定向实现
首先确保你的服务器开启了mod_rewrite模块(绝大多数主流主机默认都开着),然后把下面的代码放到根目录的.htaccess文件里:
# 启用Rewrite引擎 RewriteEngine On # 规则1:移除WWW前缀并跳转到HTTPS RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] RewriteRule ^(.*)$ https://%1/$1 [L,R=301] # 规则2:将所有HTTP请求强制跳转到HTTPS(无WWW) RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [L,R=301]
规则解释:
- 规则1:匹配任何带
www前缀的域名(不管是主域名还是子域名都适用),%1会自动捕获www.后面的完整域名部分(比如你的subdomain.domain.io),然后将请求永久重定向到无www的HTTPS地址。 - 规则2:如果用户发起的是HTTP协议的请求(不管有没有www),直接强制跳转到对应的HTTPS地址,结合规则1就能确保所有请求最终都落到
https://subdomain.domain.io/xxx这种格式。
额外提醒:
- 测试阶段可以把
R=301改成R=302(临时重定向),确认所有跳转都符合预期后再改回301(永久重定向,利于SEO)。 - 修改完
.htaccess后记得清空浏览器缓存再测试,避免旧的重定向缓存干扰结果。
内容的提问来源于stack exchange,提问作者shanmugakumar
相关产品推荐
相关产品推荐

