我想要一个检查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(可选的斜杠)开头,并且没有扩展名。
编辑:我改变了rewriterrules,这是有效的。当Rule匹配时,它会因为L而停止。否则,它会尝试找到另一个有效的规则。如果不把L放在规则的后面,所有的规则将被检查,并可能给出一个问题。所以总:
RewriteRule ^(.*).html$ index.php?rt=$1&%{QUERY_STRING} [L,QSA]
RewriteRule ^admin/?(.*)$ admin/index.php?rt=$1&%{QUERY_STRING} [L,QSA]
把你的"。html"规则放在"admin"规则之前,并用"L"标记".html"规则,这样在它之后就不会应用任何规则了