.htaccess重定向规则失效求助:为何该规则无法正常跳转?
.htaccess重定向规则失效的原因及修复方案
你的规则失效主要有两个核心问题:
- 正则匹配错误:RewriteRule的匹配模式中,正斜杠
/不需要用\/转义。你当前的规则会试图匹配包含\/(反斜杠+正斜杠)的路径,但实际访问的URL是正常的正斜杠路径,导致规则完全不触发。 - 缺少必要的规则标志:如果需要实现地址栏可见的跳转,或者确保规则执行后终止后续处理,必须添加对应的标志,否则可能出现规则不生效或被后续规则覆盖的情况。
修正后的规则
场景1:外部跳转(地址栏URL会改变为目标路径)
Options +FollowSymLinks RewriteEngine on RewriteBase / RewriteRule ^get-info/plugin/(.*)$ /repositories/get-info.php?plugin=$1 [R=302,L]
场景2:内部重写(地址栏保持原URL,后台转发请求)
Options +FollowSymLinks RewriteEngine on RewriteBase / RewriteRule ^get-info/plugin/(.*)$ /repositories/get-info.php?plugin=$1 [L]
关键说明
^和$是正则锚点,确保规则匹配完整的路径段,避免部分匹配导致意外触发。[R=302]表示临时重定向,若需要永久重定向(适用于URL永久变更场景),可替换为R=301。[L]标志表示当前规则是最后一条,处理完成后不再执行后续Rewrite规则,避免冲突。
内容的提问来源于stack exchange,提问作者pedrofernandes
相关产品推荐
相关产品推荐

