我认为 [L] 标志表示“该规则应该是此 http 请求处理的最后一条规则......”
但是当我有两条规则时,例如:
RewriteRule ^test$ php/test.php [L]
RewriteRule (.*) error.php
总是会发生这样的请求http://localhost/测试转到error.php,不是到 test.php,正如我所料,因为我把 [L] 放在那里。如果你注释掉那里的第二条规则,那么请求http://localhost/测试按预期转到 test.php。
我真正想做的是使用 mod_rewrite 捕获 404 错误。我尝试做的事情可能完全是错的。但我仍然想知道为什么捕获所有规则都是有效的,因为我做到了在规则后面添加 [L] ^test
。
我看到这里服务器管理员列出了一系列以可识别目录开头的路径,但我想通过简单地使用一个很好的包罗万象的规则来避免这样做。
答案1
如果规则导致客户端重定向,那么当客户端发出重定向请求时,它将从顶部再次重新进入规则列表。