mod_rewrite 标志不按预期工作?

我认为[L]标志表示“这个规则应该是这个http请求处理的最后一个规则..”

但是,当我有两个规则,如:

RewriteRule ^test$ php/test.php [L] RewriteRule (.*) error.php 

总是发生的是请求http:// localhost / test去error.php, 而不是我想象的test.php,因为我把[L]放在那里。 如果你注释掉那里的第二个规则,那么请求http:// localhost / test按预期转到test.php。

我真正想要做的是用mod_rewrite捕获404错误。 我想要做的事情可能是错的。 但是我仍然想知道为什么catch-all规则是活跃的,因为^test规则之后放了一个[L]。

我在这里看到一个很大的列表,在这里服务器pipe理员列出了一大堆以识别的目录开头的path,但是我想避免通过简单地使用一个很好的catch-all规则来做到这一点。

如果规则导致客户端redirect,则当客户端发出redirect请求时,它将从顶部再次重新input规则列表。