0

我有一个让我困惑的问题。我的 .htaccess 文件中有两条规则,一条应处理对一个 url 路径的请求,另一条应处理另一条路径的请求。第二条规则比第一条更普遍。我期待第一个捕获它的实例并且 [L] 停止规则处理,但是一切都落入第二个规则并被定向到错误的页面。不应该在适用的情况下应用第一条规则,然后停止规则处理吗?

以下是它们出现的两条规则:

## Path 1 ##
RewriteCond %{REQUEST_URI} ^directory/.*-([0-9]+)/?$
RewriteRule ^directory/.*-([0-9]+)/?$ directory/page.php?id=$1 [L]

## Path 2 ##
RewriteCond %{REQUEST_URI} ^.*-([0-9]+)/?$
RewriteRule ^.*-([0-9]+)/$ page.php?id=$1 [L]

也许我遗漏了一些明显的东西,但据我所知,第一条规则(如果满足条件)将被应用,然后规则处理将停止。

任何帮助将不胜感激。

谢谢

4

1 回答 1

2

您实际上不需要RewriteCond指令,因为RewriteRule模式已经暗示了它们。这在我的测试中有效:

## Path 1 ##
RewriteRule ^directory/.*-([0-9]+)/?$ /directory/page.php?id=$1 [L]

## Path 2 ##
RewriteRule ^.*-([0-9]+)/$ /page.php?id=$1 [L]

如果由于某种原因您仍然需要RewriteCond指令,请记住%{REQUEST_URI}实际上以斜杠开头,并且您必须匹配它。

于 2012-06-14T14:48:52.003 回答