Apache 如何使.htaccess在匹配规则后只执行重定向而不执行重写?
我的/old/.htaccess中有两条规则:Apache 如何使.htaccess在匹配规则后只执行重定向而不执行重写?,apache,.htaccess,mod-rewrite,redirect,Apache,.htaccess,Mod Rewrite,Redirect,我的/old/.htaccess中有两条规则: RedirectMatch 301 /old/(.*)? /new/$1 RewriteRule ^(page_[^/]+)[/]*$ index.php?page=$1 [L] 当第一个规则与重定向匹配时,如何使其停止匹配第二个规则?我发现新的url会被这两个规则处理,例如,../old/page_123->../new/page_123?page=123在第一行也放一个[L] RedirectMatch 301 /old/(.*)? /new
RedirectMatch 301 /old/(.*)? /new/$1
RewriteRule ^(page_[^/]+)[/]*$ index.php?page=$1 [L]
当第一个规则与重定向匹配时,如何使其停止匹配第二个规则?我发现新的url会被这两个规则处理,例如,../old/page_123->../new/page_123?page=123在第一行也放一个
[L]
RedirectMatch 301 /old/(.*)? /new/$1 [L]
RewriteRule ^(page_[^/]+)[/]*$ index.php?page=$1 [L]
尝试将您的
RedirectMatch
转换为RewriteRule
,并在匹配后使用L
标志终止:
RewriteRule /old/(.*)? /new/$1 [L,R=301]
RewriteRule ^(page_[^/]+)[/]*$ index.php?page=$1 [L]