You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

旧域名重定向至新域名子页面的.htaccess配置问题

解决旧域名全路径重定向到新域名指定子页面的问题

让我来帮你排查这个重定向不符合预期的问题~

首先看你当前的.htaccess规则,核心问题出在RewriteRule ^/?$这一行:它只匹配旧域名的根路径(比如olddomain.com/或www.olddomain.com/),如果用户访问旧域名下的其他子页面(比如olddomain.com/about),这条规则根本不会触发,自然达不到“所有旧域名请求都重定向到新域名指定子页面”的需求。

修正后的完整规则

# 匹配带www和不带www的旧域名(忽略大小写)
RewriteCond %{HTTP_HOST} ^(www\.)?olddomain\.com$ [NC]
# 保留你原有的SSL/cPanel验证路径排除规则
RewriteCond %{REQUEST_URI} !^/[0-9]+\..+\.cpaneldcv$
RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
# 匹配旧域名下的所有路径,统一重定向到新域名的subpage
RewriteRule ^(.*)$ https://newdomain.com/subpage/ [R=301,L]

关键调整说明

  • 把原来两个分开的HTTP_HOST条件合并成^(www\.)?olddomain\.com$,用[NC]忽略大小写,简化规则同时覆盖所有旧域名场景。
  • 将RewriteRule的匹配规则从^/?$改成^(.*)$,这样旧域名下的任何路径都会被匹配到,确保所有请求都能触发重定向。
  • [R=301,L]里的301是永久重定向,对SEO友好;L表示匹配后停止执行后续规则,避免冲突。

额外可选优化

如果你希望把旧域名的原有路径也传递到新子页面(比如olddomain.com/foo重定向到newdomain.com/subpage/foo),可以把最后一行改成:

RewriteRule ^(.*)$ https://newdomain.com/subpage/$1 [R=301,L]

测试注意事项

  • 先改用R=302临时重定向测试,确认规则生效后再换回301,避免浏览器缓存错误的重定向配置。
  • 确保你的Apache服务器已经开启mod_rewrite模块,并且站点目录的AllowOverride设置为All,否则.htaccess规则不会生效。

内容的提问来源于stack exchange,提问作者sandyff

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:20:42