多重写规则

问题描述:

我想知道,如果下面有可能多重写规则

RewriteRule ^([^/]*)/([^/]*)$     /search.php?type=$1&query=$2 [L] 
RewriteRule ^([^/]*)/([^/]*)/([^/]*)$   /search.php?type=$1&query=$2&condition=$3 [L] 
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)$ /search.php?type=$1&query=$2&page=$3[L] 

正如你所看到的第一个和第三排是similiar唯一的区别是名称第三个参数,第二条规则将被用于诸如

/isbn/1203910293/new 

页,而第三条规则将被用于网页例如在页面别名页码

/title/harry-potter/2 

我知道这看起来很愚蠢的考虑,我可以只是调用condition参数,但如果使用的参数page

第三个规则的图案,将在未来明确的事情了^([^/]*)/([^/]*)/([^/]*)/([^/]*)$比赛

/title/harry-potter/2 

因为规则需要四个部分,例如

/title/harry-potter/2/xyz 

,或者至少尾部斜杠

/title/harry-potter/2/ 

相反,它会通过第二条规则模式相匹配,因为它有三个部分太多,就像

/isbn/1203910293/new 

如果你想要匹配页码,您需要按照类似于第二条规则的规则进行匹配,但要更具体一些,例如

RewriteRule ^([^/]*)/([^/]*)/(\d+)$ /search.php?type=$1&query=$2&page=$3 [L]