1

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

我有简单的规则,比如

^(.*)$ index.php?pag=cms&title=$1
^store/(.*)$ index.php?pag=store&id=$1

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

4

1 回答 1

6

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

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

^(.*)$ index.php?pag=cms&title=$1  [L]
^store/(.*)$ index.php?pag=store&id=$1 # won't fire now
于 2013-07-18T13:43:25.207 回答