.htaccess多子域名301重定向到新域名不同目录配置咨询
.htaccess多子域名跨域重定向实现方案
你提到的旧域名多子域名重定向到新域名对应目录的需求,完全可以通过.htaccess的mod_rewrite模块实现,只要主机支持rewrite规则即可。
多子域名分别跳转对应目录的配置写法
你之前写的单子域名重定向规则逻辑是对的,多子域名场景只需要按相同格式追加对应规则组即可。
举个实际场景例子,如果你需要实现以下跳转映射:
a.old-domain.com下所有内容跳转到new-domain.com/category-a/对应路径b.old-domain.com下所有内容跳转到new-domain.com/category-b/对应路径c.old-domain.com下所有内容跳转到new-domain.com/category-c/对应路径
直接在.htaccess中写入以下规则即可:
RewriteEngine On # 子域名a跳转规则 RewriteCond %{HTTP_HOST} ^a\.old-domain\.com$ [NC] RewriteRule ^(.*)$ https://new-domain.com/category-a/$1 [R=301,NC,L,QSA] # 子域名b跳转规则 RewriteCond %{HTTP_HOST} ^b\.old-domain\.com$ [NC] RewriteRule ^(.*)$ https://new-domain.com/category-b/$1 [R=301,NC,L,QSA] # 子域名c跳转规则 RewriteCond %{HTTP_HOST} ^c\.old-domain\.com$ [NC] RewriteRule ^(.*)$ https://new-domain.com/category-c/$1 [R=301,NC,L,QSA]
注意你原有写法中使用%{REQUEST_URI}拼接目标路径容易出现双斜杠、路径重复的问题,用$1直接引用RewriteRule匹配到的路径片段更准确。
子域名全量内容重定向的参数说明
你提到的「指定子域名下所有页面、子目录全部重定向」分两种常见场景,不需要额外新增特殊参数,调整规则目标即可:
- 路径一一对应跳转:也就是原链接路径和新链接路径完全对应,比如
a.old-domain.com/doc/1.html跳转到new-domain.com/category-a/doc/1.html,上面给出的规则已经完全覆盖这个需求,规则里的参数作用分别是:R=301:标记为永久重定向,搜索引擎会同步转移原有页面权重NC:域名、路径匹配时不区分大小写L:当前规则匹配命中后立刻停止执行后续重写规则,避免规则冲突QSA:自动保留原URL携带的查询参数,比如原链接带?id=123&from=search,跳转后参数会自动追加到新链接后
- 全路径跳转到固定单页:也就是子域名下不管访问什么路径,都统一跳转到新域名的一个固定地址(比如子域名作废后全部跳转到新站对应栏目首页),只需要把RewriteRule的目标路径改成固定地址、去掉路径引用
$1即可,示例:# a子域名所有路径统一跳转到栏目首页 RewriteCond %{HTTP_HOST} ^a\.old-domain\.com$ [NC] RewriteRule ^(.*)$ https://new-domain.com/category-a/ [R=301,NC,L,QSA]
配置注意事项
- 规则上传后先清空浏览器缓存再测试,301永久重定向会被浏览器本地缓存,旧缓存容易导致测试结果不准
- 如果规则不生效,先确认主机已经开启mod_rewrite模块,同时站点配置中AllowOverride设置为All,允许.htaccess生效
内容的提问来源于stack exchange,提问作者Carabao Coder
相关产品推荐
相关产品推荐

