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

.htaccess 301重定向问题:排除目录后指定文件跳转失效

问题原因

你的第二条规则没生效,核心问题是mod_rewrite和mod_alias的执行顺序,以及第一条规则的[L]标志导致的:

  • 第一条RewriteRule属于mod_rewrite模块,执行优先级比mod_alias模块的Redirect指令高,会先处理请求。
  • 当请求/test.php时,第一条规则的!^c($|/)条件成立(/test.php不是以c开头),加上[L]标志会终止后续所有规则执行,第二条Redirect根本没机会触发。
解决方案

把所有重定向逻辑统一用mod_rewrite实现,并且调整规则顺序——先处理特殊的/test.php重定向,再处理全局重定向,保证特殊规则优先执行。

修正后的.htaccess配置:

RewriteEngine on

# 优先处理/test.php的重定向
RewriteRule ^test\.php$ /c/test.php [L,R=301]

# 排除/c/目录及其子内容,将其他请求重定向到b.example
RewriteCond %{REQUEST_URI} !^/c($|/)
RewriteRule ^ https://b.example/ [L,R=301]
规则说明
  • 第一条RewriteRule:精确匹配/test.php,直接重定向到/c/test.php,[L]标志确保这条规则执行后不再处理后续规则。
  • 第二条通过RewriteCond先判断请求路径是否不是以/c或/c/开头,满足条件时才执行重定向到b.example的规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 13:15:56