Поместите это перед вашим cath all
правилом.
RewriteCond %{ENV:REDIRECT_STATUS} !=200
Проблема в том, что после обработки флага [L] все последующие RewriteRules действительно игнорируются, однако файл обрабатывается СНОВА с самого начала, теперь с новым URL.
Это магическое условие не будет обрабатывать catch all
, если файл уже был перенаправлен.
PS:
Если это не сработает, вам может понадобиться немного изменить условие: 200
, !=200
, ^.
, ^$
.
По-видимому, переменная устанавливается на 200
для перенаправления, но и другие страницы (ошибки и прочее) устанавливают для нее какое-то значение. Теперь это означает, что вы либо проверяете, is empty
, is not empty
, is 200
или is not 200
, в зависимости от того, что вам нужно.