Mod rewrite mod_重写匹配错误的模式

Mod rewrite mod_重写匹配错误的模式,mod-rewrite,apache2,Mod Rewrite,Apache2,我的.htaccess如下所示: RewriteEngine On RewriteRule ^client/([0-9a-zA-Z]+)/(.*)$ licensee/client/$2?id=$1 [L,QSA] RewriteRule ^licensee/(.*)/$ licensee/$2?id=$1 [L,QSA] 但是,如果我在浏览器中访问/client/asdf/,它将使用第二条重写规则而不是第一条。如果我注释掉第二条重写规则,它将按预期使用第一条规则 我不知道第二条规则怎么可能与

我的
.htaccess
如下所示:

RewriteEngine On
RewriteRule ^client/([0-9a-zA-Z]+)/(.*)$ licensee/client/$2?id=$1 [L,QSA]
RewriteRule ^licensee/(.*)/$ licensee/$2?id=$1 [L,QSA]
但是,如果我在浏览器中访问
/client/asdf/
,它将使用第二条重写规则而不是第一条。如果我注释掉第二条重写规则,它将按预期使用第一条规则


我不知道第二条规则怎么可能与
/client/asdf/
匹配-我是否忽略了什么?

当您访问/client/asdf/时,它与第一条规则匹配,因此一个新的请求成为与第二条规则匹配的“licensizer/client/?id=asdf”。

L标志是否不能阻止这种情况的发生?您有什么建议?@Tak L标志告诉apache停止处理第一个请求的重写规则,并将新请求标记为新的,这与第二个规则相匹配。最好为您的RewriteRule添加RewriteCond以避免这种情况。