多重写规则
问题描述:
我想知道,如果下面有可能多重写规则
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]