Я думал, что флаг [L] указывает, что «это правило должно быть последним правилом, обработанным для этого HTTP-запроса. . "
Однако, когда у меня есть 2 правила, например:
RewriteRule ^test$ php/test.php [L]
RewriteRule (.*) error.php
Что всегда происходит, так это запросы к http: // localhost / test переходят к error.php, не для проверки .php, как я и ожидал, так как я поставил там [L]. Если вы закомментируете здесь второе правило, то запросы к http: // localhost / test перейдут к test.php, как и ожидалось.
На самом деле я пытаюсь отловить ошибку 404 с помощью mod_rewrite. Возможно, то, что я пытаюсь сделать, просто неправильно. Но я все еще хочу знать, почему действует универсальное правило, поскольку я действительно поставил [L] после правила ^ test
.
Я вижу большой список в здесь , где администратор сервера перечисляет кучу путей, которые начинаются с распознанных каталогов, но я хотел избежать этого, просто используя красивое универсальное правило.
Если правило приведет к клиентскому перенаправлению затем, то оно повторно введет список правила снова от вершины, когда клиент выполнит перенаправленный запрос.