如何通过htaccess将旧域名除首页外的所有流量重定向到新子域名
htaccess 重定向规则调整方案
你现有规则的问题是匹配逻辑完全相反:RewriteRule ^/?$ 是精确匹配根路径(首页),所以当前规则实现的是仅首页跳转,和你的需求刚好相反。
调整后的配置如下:
RewriteEngine On # 匹配旧域名(兼容带www和不带www两种访问场景) RewriteCond %{HTTP_HOST} ^(www\.)?olddomain\.com$ [NC] # 排除首页路径,仅非首页请求触发重定向 RewriteRule !^/?$ https://newsubdomain.domain.com%{REQUEST_URI} [R=301,L,NC]
规则说明
(www\.)?合并了原本两条重复的域名匹配条件,NC标识表示忽略域名大小写,适配不同客户端的请求习惯!^/?$为反向匹配规则,仅当访问路径不是首页时才会触发后续重定向逻辑%{REQUEST_URI}会自动携带用户访问的原始路径及参数,比如用户访问olddomain.com/post?id=123会自动跳转到newsubdomain.domain.com/post?id=123,无需手动拼接路径
注意事项
测试阶段建议先把R=301改成R=302临时重定向,确认规则符合预期后再换回301永久重定向,避免错误规则被浏览器长期缓存影响正常访问。
内容的提问来源于stack exchange,提问作者Tonderai Mutanda
相关产品推荐
相关产品推荐

