Apache htaccess规则优先级

sla*_*197 0 mod-rewrite

我知道.htaccess规则是从上到下解析的,但是如果我的URL匹配两个规则将使用哪个规则以及为什么呢?

我有简单的规则

^(.*)$ index.php?pag=cms&title=$1
^store/(.*)$ index.php?pag=store&id=$1
Run Code Online (Sandbox Code Playgroud)

基本上任何URL都匹配第一个规则,那么其他URL会发生什么?

Rav*_*yal 6

如果URL匹配两个规则,则它是第一个重写的规则.这并不是说第二条规则不会触发.它确实但它无法匹配,因为后续规则触发了它之前的规则的输出.

如果您不希望重写为直通并停在第一个匹配规则,则可以使用该[L]标志将规则标记为最后一个.

^(.*)$ index.php?pag=cms&title=$1  [L]
^store/(.*)$ index.php?pag=store&id=$1 # won't fire now
Run Code Online (Sandbox Code Playgroud)