如何配置RewriteRule实现单域名两个子目录分别跳转至不同独立域名
你的重写规则存在两个核心错误导致无法匹配需求:
- 若规则写在
.htaccess文件中,RewriteRule 匹配的路径默认不带开头的斜杠/,你写的^(\/folder1\/)前缀带斜杠无法命中目标路径 - 捕获组引用错误:你将
folder1/分到了第一个捕获组$1,后续需要保留的xyz路径属于第二个捕获组$2,跳转时引用$1会把folder1/也带到新域名后,不符合你要去掉路径前缀的需求
修正后的规则如下:
RewriteCond %{HTTP_HOST} ^(www\.)?domain1\.ca$ [NC] RewriteRule ^folder1/(.*)$ https://domain2.ca/$1 [R=301,L,NC] RewriteCond %{HTTP_HOST} ^(www\.)?domain1\.ca$ [NC] RewriteRule ^folder2/(.*)$ https://domain3.ca/$1 [R=301,L,NC]
补充说明:
- 规则中用
(www\.)?简化了原来两条OR的判断逻辑,NC标记用于忽略大小写,避免域名、路径大小写不一致导致匹配失败 - 如果你是将规则写在Apache主配置文件而非站点目录下的
.htaccess中,才需要给路径加上开头的斜杠,即匹配规则改为^/folder1/(.*)$ - 调试阶段建议先把
R=301改为R=302,避免浏览器缓存错误的301规则影响测试结果,确认跳转逻辑完全符合预期后再改回301
内容的提问来源于stack exchange,提问作者daveg57
相关产品推荐
相关产品推荐

