我想要一个检查 url 的重写规则。它应该从一个条件开始,不应该有扩展。
这是我到目前为止创建的规则:
RewriteRule ^admin/?(.*)$ admin/index.php?rt=$1&%{QUERY_STRING} [L,QSA]
我有第二条规则,它适用于扩展名为 .html 的所有内容。所以我希望如果出于某种原因我这样做:http://domain.com/admin/page-to-test.html应该应用于第二个规则,并且与第一个规则不匹配。我也尝试过:
RewriteRule ^admin/?(.*)(!\.html)$ admin/index.php?rt=$1&%{QUERY_STRING} [L,QSA]
然而,这也没有奏效。它应该以 admin(可选斜杠)开头,并且没有扩展名。
编辑:我更改了 RewriteRules 并且有效。因此,当规则匹配时,它会因为 L 而停止。否则它会尝试找到另一个有效的规则。如果没有把 L 放在规则之外,所有的规则都会被检查,并且会出现问题。
总而言之:
RewriteRule ^(.*).html$ index.php?rt=$1&%{QUERY_STRING} [L,QSA]
RewriteRule ^admin/?(.*)$ admin/index.php?rt=$1&%{QUERY_STRING} [L,QSA]