Apache .htaccess规则顺序

Apache .htaccess规则顺序,apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,我有一个让我困惑的问题。在.htaccess文件中,我有两条规则,一条应该处理对一个url路径的请求,另一条应该再次检查另一个路径。第二条规则比第一条规则更一般。我希望第一条规则捕获其实例,[L]停止规则处理,但所有内容都会落入第二条规则,并被指向错误的页面。第一条规则不应该在适用的地方应用,然后规则处理停止吗 以下是两条规则: ## Path 1 ## RewriteCond %{REQUEST_URI} ^directory/.*-([0-9]+)/?$ RewriteRule ^direc

我有一个让我困惑的问题。在.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]
也许我遗漏了一些明显的东西,但据我所知,第一条规则(如果条件满足)将被应用,然后规则处理将停止

任何帮助都将不胜感激


谢谢

您实际上不需要
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}
实际上是以斜杠开头的,您必须匹配斜杠。

@Ianzz这只是一个错误键入,我在OP中已更正。同样的问题仍然存在。请确保您已复制并粘贴了实际规则,而不是手工重打。调试可能键入错误且与实际失败的规则不同的规则是浪费时间的。“请记住,%{REQUEST_URI}实际上以斜杠开头,您必须匹配它。”这是我的问题。谢谢你的帮助,很抱歉浪费了你的时间。我只是想让事情变得更简单以节省时间:(