我有以下规则:的.htaccess规则优先
RewriteRule ^app ?page=app [QSA]
RewriteRule ^app/([0-9]+) ?page=app&id=$1 [QSA]
RewriteRule ^app/([0-9]+)/edit ?page=edit&id=$1 [QSA]
我的页面打印GET PARAMS。当我打电话/应用程序,以下是印刷:
Array ([page] => app)
当我打电话/应用/ 123或/应用/ 123 /编辑,打印保持相同。但是,当我颠倒这些命令的顺序时,我得到了不同的结果。
对于/应用/ 123 /编辑:
Array ([page] => edit [id] => 123)
对于/应用/ 123:
Array ([page] => app [id] => 123)
这是为什么?另外,有没有办法改变这种情况,因为从顶部到底部的层次顺序通过命令看起来更容易,而不是相反。提前致谢。
非常感谢。我会在10分钟内接受你的回答。 – arik
虽然有一个问题:我怎么能让这部分/ [0-9] + /添加?id = $ 1 [QSA]部分到下面的所有页面/应用程序中,而我不必明确地重复这一点?id = $ 1表达式在随后的表达式? – arik
问题中的第二条和第三条规则应该得到使用,因为从不指定L标志。不知道他们为什么不这样做,但你在这里所做的只是迫使一条规则被遵守。 –