Url重写必须以开头而不是以结尾



我想要一个检查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"规则,这样在它之后就不会应用任何规则了

最新更新