Apache如何将指定文件夹及子文件夹请求重定向到固定外部URL
Apache 子目录全路径统一重定向实现方案
针对将/oldfolder/目录下所有层级请求统一跳转、不保留原路径后缀的需求,有两种稳定可落地的配置方式,二选一即可:
方案一:RedirectMatch 规则(推荐,配置最简)
该方案依赖Apache默认启用的mod_alias模块,无需额外加载模块,兼容性好。
将以下规则添加到网站根目录的.htaccess文件,或对应站点的Apache虚拟主机配置段中即可:
RedirectMatch 301 ^/oldfolder(/.*)?$ http://www.otherdomain.com/new/
参数说明:
301为永久重定向状态码,适合站点正式迁移场景,搜索引擎会同步更新索引;如果是临时跳转测试,替换为302即可- 正则部分
^/oldfolder(/.*)?$会覆盖所有匹配路径:包括/oldfolder/根路径、任意深度的子目录/文件请求 - 规则末尾直接写目标地址,不会自动拼接原请求的剩余路径,完全匹配需求
方案二:mod_rewrite 重写规则(适配已有伪静态场景)
如果站点已经配置了大量mod_rewrite伪静态规则,用该方案可以避免规则冲突,逻辑更可控。
首先确认Apache已经加载mod_rewrite模块,随后添加以下规则:
RewriteEngine On RewriteRule ^oldfolder(/.*)?$ http://www.otherdomain.com/new/ [L,R=301]
标记说明:
L:匹配到当前规则后立即停止执行后续重写规则,避免被其他规则覆盖R=301:指定301永久重定向,临时测试替换为R=302
配置生效注意事项
- 如果规则写在Apache主配置/虚拟主机配置文件中,保存后需要重启Apache服务才能生效
- 如果规则写在
.htaccess文件中,无需重启服务,清空浏览器缓存后测试即可,建议优先用无痕模式测试,避免301重定向缓存导致结果异常 - 目标地址请填写完整的带协议头(http/https)的全路径,否则会被Apache识别为站内相对路径,跳转出错
内容的提问来源于stack exchange,提问作者Xtine
相关产品推荐
相关产品推荐

