如何使.htaccess只执行重定向但在规则匹配后不执行重写?

时间:2014-04-16 08:12:58

标签: apache .htaccess mod-rewrite redirect

我的/old/.htaccess中有两个规则:

RedirectMatch 301 /old/(.*)? /new/$1
RewriteRule ^(page_[^/]+)[/]*$ index.php?page=$1 [L]

如果第一个规则与重定向匹配,如何使其停止匹配第二个规则?我发现两个规则都会对新网址进行处理,例如: ... / old / page_123 - > ... /新/ page_123?页= 123

2 个答案:

答案 0 :(得分:1)

[L]放在第一行

RedirectMatch 301 /old/(.*)? /new/$1 [L]
RewriteRule ^(page_[^/]+)[/]*$ index.php?page=$1 [L]

答案 1 :(得分:1)

尝试将RedirectMatch翻译为RewriteRule并使用L标志在匹配后终止:

RewriteRule /old/(.*)? /new/$1 [L,R=301]
RewriteRule ^(page_[^/]+)[/]*$ index.php?page=$1 [L]