Флаг mod_rewrite [L] не работает должным образом?

Флаг mod_rewrite [L] не работает должным образом?

Я думал, что флаг [L] указывает на то, что «это правило должно быть последним правилом, обработанным для этого http-запроса».

Однако когда у меня есть 2 правила, например:

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

Что всегда происходит, так это запросы наhttp://localhost/testперейдите к error.php,нетв test.php, как я и ожидал, так как я поставил [L] там. Если вы закомментируете второе правило там, то запросы наhttp://localhost/testперейдите к test.php, как и ожидалось.

На самом деле я пытаюсь поймать ошибки 404 с помощью mod_rewrite. Возможно, то, что я пытаюсь сделать, просто неправильно. Но я все еще хочу знать, почему правило catch-all активно, посколькуЯ сделалпоставьте [L] после ^testправила.

Я вижу большой листинг вздесьгде администратор сервера перечисляет несколько путей, начинающихся с распознанных каталогов, но я хотел избежать этого, просто используя хорошее универсальное правило.

решение1

Если правило приводит к перенаправлению клиента, то оно снова попадет в список правил сверху, когда клиент сделает перенаправленный запрос.

Связанный контент