如何将带www的域名重定向至无www域名?附现有.htaccess配置
解决www域名重定向到非www HTTPS地址的问题
嘿,我来帮你搞定这个重定向需求!你需要实现两个核心目标:一是禁止用户通过www.example.com访问,二是强制所有流量走HTTPS的非www域名(https://example.com)。我给你调整后的完整.htaccess配置,同时拆解每个规则的作用,方便你理解:
RewriteEngine On # 规则1:将所有www开头的域名重定向到非www的HTTPS地址 RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] RewriteRule ^(.*)$ https://%1/$1 [L,R=301] # 规则2:将非www的HTTP请求强制重定向到HTTPS RewriteCond %{HTTPS} off RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [L,R=301] # 保留你原本的去除尾部斜杠规则(如果不需要可以删除) RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)/$ /$1 [L,R=301]
各规则详解:
规则1:
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]会匹配所有以www.开头的域名([NC]表示忽略大小写,比如WWW.example.com也会被匹配)。RewriteRule则把请求重定向到https://%1/$1,其中%1是捕获到的www.后面的域名(也就是你的example.com),$1是用户请求的路径,确保跳转后路径不会丢失。R=301是永久重定向,对搜索引擎SEO友好,也会让浏览器缓存这个跳转规则。规则2:专门处理非www的HTTP请求,确保用户直接输入
example.com(不带https)时,也会被强制跳转到https://example.com,避免出现HTTP访问的情况。尾部斜杠规则:这是你原本配置里的功能,保留它可以让非文件夹的请求自动去除尾部斜杠(比如
https://example.com/page/会跳转到https://example.com/page),如果不需要这个功能可以直接删除这两行。
注意事项:
- 确保你的Apache服务器已经开启了
mod_rewrite模块,否则这些规则不会生效。 - 测试阶段可以把
R=301改成R=302(临时重定向),确认跳转正常后再改回301,避免浏览器缓存错误的跳转规则。 - 把这个配置保存到网站根目录的
.htaccess文件中,注意文件权限设置为服务器可读(通常是644)。
内容的提问来源于stack exchange,提问作者User57
相关产品推荐
相关产品推荐

