.htaccess配置下非www根域名无路径跳转www失效问题
非www根域名无路径请求重定向失败解决方案
排查与修复步骤
- 第一步先清理浏览器永久重定向缓存:301重定向会被浏览器长期缓存,多数规则修改后未生效的场景都是缓存导致的,测试时建议使用浏览器隐身窗口,或手动清理浏览器缓存、本地DNS缓存后再验证。
- 若清理缓存后问题仍存在,替换原
.htaccess规则为优化后的版本:
RewriteEngine On RewriteBase / DirectorySlash On # 非www域名全站跳转至www,覆盖根路径无斜杠场景 RewriteCond %{HTTP_HOST} ^example\.com$ [NC] RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L,NE]
优化说明
- 新增
DirectorySlash On配置:确保Apache自动处理目录请求的尾部斜杠逻辑正常,不会和重定向规则冲突 - 新增
[NC]参数:匹配域名时不区分大小写,避免大小写差异导致的域名匹配失败 - 新增
[NE]参数:不对URL中的特殊字符做转义处理,避免路径带特殊符号时跳转后出现编码异常 - 去掉了原规则中目标URL两侧的多余引号,避免部分Apache版本解析异常
测试建议
正式配置为301永久重定向前,可先将R=301改为R=302做临时跳转测试,确认所有场景跳转正常后再改回301,避免错误的301规则被缓存后影响用户访问。
内容的提问来源于stack exchange,提问作者user14043495
相关产品推荐
相关产品推荐

