0

我想要一个检查 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]
4

1 回答 1

1

将您的“.html”规则放在“admin”规则之前,并用“L”标志标记“.html”规则,因此在它之后不会应用任何规则。

于 2013-03-24T15:06:27.337 回答