如何将域名后缀.co替换为.ai且保留路径,修复Rewrite重定向规则问题
原规则存在的问题
- 域名匹配错误:你实际要匹配的域名是
my.domain.co,但RewriteCond里写的是my.mydomain.co,多了冗余的mydomain字段,完全匹配不到目标请求的Host头。 - 重定向目标写法错误:
%my.mydomain.ai里的百分号属于语法误用,没有对应捕获变量引用,会导致生成的重定向地址格式错误。 - 规则灵活性差:硬写完整域名的写法,后续如果要适配同后缀下的其他子域名还要单独修改规则。
修正后的可用规则
首先确认你已经开启了Apache的mod_rewrite模块,再把规则替换为以下内容即可满足需求:
# 匹配所有my.domain.co的请求,NC代表不区分大小写 RewriteCond %{HTTP_HOST} ^my\.domain\.co$ [NC] # 把后缀替换为.ai,保留路径所有内容 RewriteRule ^(.*)$ https://my.domain.ai/$1 [R=301,L,NC]
如果需要更通用的、适配任意前缀的.co域名转.ai,可以用捕获组写法,不用硬写域名前缀:
# 捕获Host里除了.co后缀之外的所有内容 RewriteCond %{HTTP_HOST} ^(.*)\.co$ [NC] # 直接拼接.ai后缀,保留原路径 RewriteRule ^(.*)$ https://%1.ai/$1 [R=301,L,NC]
注意事项
- 修改规则后要重启Apache服务生效。
- 301重定向会被浏览器长期缓存,测试的时候可以先用R=302临时重定向验证,确认没问题再改回301,或者测试时清理浏览器缓存/用无痕模式测试。
内容的提问来源于stack exchange,提问作者GGGorast
相关产品推荐
相关产品推荐

