O sinalizador mod_rewrite [L] não está funcionando conforme o esperado?

O sinalizador mod_rewrite [L] não está funcionando conforme o esperado?

Achei que o sinalizador [L] indicava que "esta regra deveria ser a última regra processada para esta solicitação http".

No entanto, quando tenho 2 regras como:

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

O que sempre acontece são pedidos parahttp://localhost/testevá para erro.php,nãopara test.php como eu esperava, já que coloquei o [L] lá. Se você comentar a segunda regra ali, então solicitaráhttp://localhost/testevá para test.php conforme esperado.

O que realmente estou tentando fazer é detectar erros 404 com mod_rewrite. É possível que o que estou tentando fazer esteja completamente errado. Mas ainda quero saber por que a regra geral está ativa, já queEu fizcoloque um [L] depois da ^testregra.

Vejo uma listagem grande emaquionde o administrador do servidor lista vários caminhos que começam com os diretórios reconhecidos, mas eu queria evitar fazer isso simplesmente usando uma boa regra geral.

Responder1

Se uma regra resultar em um redirecionamento do cliente, ela entrará novamente na lista de regras a partir do topo quando o cliente fizer a solicitação redirecionada.

informação relacionada