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

Я думал, что флаг [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 .

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

0
задан 24 December 2010 в 01:51
1 ответ

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

2
ответ дан 4 December 2019 в 15:00

Теги

Похожие вопросы