域名迁移后尾斜杠引发重定向链,如何用.htaccess修复?
修复尾斜杠引发的重定向链问题
问题根源在于当前规则对根目录请求的处理逻辑:访问https://olddomain.com/时,规则会将其重定向到https://newdomain.com/(因捕获组$1为空,拼接后自动带上尾斜杠),而新域名的服务器默认目录规范化规则又会把带尾斜杠的根路径重定向到无尾斜杠版本,最终形成两次跳转的重定向链。
修改.htaccess配置,单独处理根目录请求,同时保留其他路径的正常重定向:
<IfModule mod_rewrite.c> RewriteEngine On # 单独处理根目录带尾斜杠的请求,直接跳转到无尾斜杠的新域名 RewriteCond %{HTTP_HOST} ^(www\.)?olddomain.com [NC] RewriteRule ^/$ https://newdomain.com [R=301,L] # 处理其他所有路径的重定向,保留原路径结构 RewriteCond %{HTTP_HOST} ^(www\.)?olddomain.com [NC] RewriteRule (.*) https://newdomain.com/$1 [R=301,L,NC] </IfModule>
规则说明:
- 第一条规则精准匹配根目录的带尾斜杠请求(
^/$),直接跳转至无尾斜杠的新域名,从源头避免二次重定向。 - 第二条规则覆盖所有非根目录的请求,保持原路径结构完成域名切换。
- 将原有的两个主机条件合并为
^(www\.)?olddomain.com,简化规则逻辑。
修改后建议使用浏览器隐私模式测试,避免旧重定向缓存干扰结果。
内容的提问来源于stack exchange,提问作者RocketBrian
相关产品推荐
相关产品推荐

