如何实现包含api路径的URL到新域名的301重定向?
正确的.htaccess重定向配置方案
直接用以下规则即可实现需求:
RewriteEngine On # 仅对旧域名下的/api路径做永久重定向 RewriteCond %{HTTP_HOST} ^old-domain\.com$ [NC] RewriteRule ^api/(.*)$ https://new-domain.com/api/$1 [L,R=301]
规则说明:
RewriteCond %{HTTP_HOST} ^old-domain\.com$ [NC]:限定仅匹配旧域名的请求,[NC]表示忽略大小写,避免因域名大小写差异导致匹配失败。RewriteRule ^api/(.*)$ https://new-domain.com/api/$1 [L,R=301]:匹配路径以/api开头的请求,将/api后的所有内容($1)映射到新域名的对应位置,[L]表示执行完这条规则后停止后续匹配,[R=301]表示发送永久重定向的HTTP状态码。
你之前的规则为什么不生效:
- RewriteRule的错误:RewriteRule的匹配模式仅针对请求的路径部分(即域名、协议之后的内容,比如
/api/lalala),不能直接写完整的https://old-domain/api/(.*),所以这条规则根本匹配不到任何请求。 - RedirectMatch的错误:同理,RedirectMatch的匹配模式也是针对路径部分,直接写
costercatalog.com/api/(.*)会被当作路径的一部分去匹配,自然无法生效。
扩展:如果旧域名包含www前缀
如果你的旧域名同时存在old-domain.com和www.old-domain.com两种形式,可以把RewriteCond修改为:
RewriteCond %{HTTP_HOST} ^(www\.)?old-domain\.com$ [NC]
这样两种域名下的/api路径都会被正确重定向。
内容的提问来源于stack exchange,提问作者Toma Tomov
相关产品推荐
相关产品推荐

