https://httpd.apache.org/docs/2.4/mod/mod_r...tml#rewritecondRewriteCond Directive
Description: Defines a condition under which rewriting will take place
Syntax: RewriteCond TestString CondPattern [flags]
...*
%{ENV:variable}, where variable can be any environment variable, is also available. This is looked-up via internal Apache httpd structures and (if not found there) via getenv() from the Apache httpd server process.
https://httpd.apache.org/docs/2.4/custom-error.html...*
REDIRECT_ environment variables are created from the environment variables which existed prior to the redirect. They are renamed with a REDIRECT_ prefix, i.e., HTTP_USER_AGENT becomes REDIRECT_HTTP_USER_AGENT.
REDIRECT_URL, REDIRECT_STATUS, and REDIRECT_QUERY_STRING are guaranteed to be set, and the other headers will be set only if they existed prior to the error condition.
None of these will be set if the ErrorDocument target is an external redirect (anything starting with a scheme name like http:, even if it refers to the same host as the server).
Customizing Error Responses
Własna odpowiedź na błąd
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond - określa warunek pod którym przepisanie będzie miało miejsce.
% - określa chyba zmienną server'a.
ENV - prefix mówiący o możliwości występowania po nim zmiennej środowiskowej. Mogą występować zwykłe zmienne jak i środowiskowe.
REDIRECT_STATUS - zmienna środowiskowa, ponieważ zaczyna się od prefix'u REDIRECT_.
^$ - nakazuje łańcuchowi znaków (string), aby zaczynał się od pustego string'a i kończył na pustym string'u.
Jeśli chodzi o różnicę między "^$", a "", to jest i to znaczna. Pierwszy wzorzec łapie wszystko, co zaczyna się od pustego string'a i kończy na pustym string'u, czyli nie wyłapie np. tego: " ", natomiast drugi wzorzec wyłapie ten string jako prawidłowy (ten którego chcieliśmy wyłapać).
Dla zwizualuowania/zwizualizowania:
<?php
// int(0)
// int(1)
// int(1)
// int(1)
// int(1)
// int(0)
// int(0) - niezgodne ze wzorcem
// int(1) - zgodne ze wzorcem
?>
W celu uzyskania pełnej lokalnej ścieżki systemu plików z żądania w kontekście per-server, użyj na podstawie look-ahead %{LA-U:REQUEST_FILENAME} do ustalenia końcowej wartości (razem) z REQUEST_FILENAME.
O ile dobrze zrozumiałem, to jeśli chcesz ze zwykłej zmiennej zrobić zmienną środowiskową to musisz dodać prefix REDIRECT_ i obok niego dopisać zwykłą zmienną np. STATUS i wychodzi wtedy zmienna środowiskowa REDIRECT_STATUS. Wyjątkiem od tej reguły jest chyba tylko to: %{ENV:variable}, choć nie jestem tego pewien, musiałbyś doczytać.
https://httpd.apache.org/docs/2.4/env.htmlURL Rewriting
The %{ENV:variable} form of TestString in the RewriteCond allows mod_rewrite's rewrite engine to make decisions conditional on environment variables. Note that the variables accessible in mod_rewrite without the ENV: prefix are not actually environment variables. Rather, they are variables special to mod_rewrite which cannot be accessed from other modules.
Co do Twojego problemu to ...
Jeśli zmienna środowiskowa REDIRECT_STATUS będzie pusta to wykonuj/nie wykonuj przekierowywania. Oznacza to tyle, to co podałem w przykładzie powyżej. Zatem linijka/linia o którą pytasz jest napisana tak, aby nie było zbędnych przekierowań. Reasumując, jeśli we wzorcu (pattern) jest ^$, to wtedy string dla którego nastąpi przekierowywanie jest pusty absolutnie pusty, bezwzględnie (ale to tylko umowa). Jeśli w string'u znajdzie się conajmniej jeden znak (character), to
nie nastąpi przekierowywanie, czy przepisanie string'a na inny adres, czy coś w tym stylu.
https://httpd.apache.org/docs/2.4/mod/mod_r...tml#rewritecond :
Cytat
The RewriteCond directive defines a rule condition. One or more RewriteCond can precede a RewriteRule directive. The following rule is then only used if both the current state of the URI matches its pattern, and if these conditions are met.
TestString is a string which can contain the following expanded constructs in addition to plain text:
Dyrektywa RewriteCond określa warunek reguły. Jeden lub więcej RewriteCond może poprzedzać
dyrektywę RewriteRule. Poniższa reguła jest wówczas tylko użyta jeśli zarówno bieżący stan z URI
pasują wzorem, i jeśli te warunki są spełnione.
Cytat
w jaki sposób ta linijka:
...*
Powoduję "naprawę" tego błędu.
Mi się wydaje, że dzieje się tak dlatego, że nie masz regex'ów odpowiednich w RewriteCond. Spróbuj może tak:
Kod
RewriteCond %{REQUEST_FILENAME} ^$ !-d
RewriteCond %(REQUEST_FILENAME) ^$ !-f
RewriteCond %(REQUEST_FILENAME) ^$ !-l
RewriteRule ^(.+)$ /1/public/index.php?url=$1 [QSA,L]
Chodzi oto, że ta jedna linia o którą pytasz powoduje brak przekierowania wszystkich URI chyba. Dlatego więc zamiast w kilku miejscach pisać ... ^$ ..., można machnąć to w jednej linii i nie dopisywać tego w kolejnych, tak mi się wydaje.
Wracając do sedna, masz najprawdopodobniej nieskończoną pętlę przekierowań i wtedy uruchamiane jest zabezpieczenie, które temu zapobiega.
Nie możesz mieć nieskończonej pętli chyba, więc musisz dodać warunek, który zakończy n'te przekierowanie i "wyjdzie" ze skryptu/pliku/pętli.
Cytat
LimitInternalRecursion prevents the server from crashing when entering an infinite loop of internal redirects or subrequests. Such loops are usually caused by misconfigurations.
Resztę sam doczytaj (w dokumentacji).
LimitInternalRecursion Directive
Description: Determine maximum number of internal redirects and nested subrequests
Syntax: LimitInternalRecursion number [number]
Default: LimitInternalRecursion 10
Context: server config, virtual host
LimitInternalRecursion DirectiveMasz ponad 10 cykli czegoś tam i wyrzuca Ci błąd, jeśli chcesz aby nie wyrzucało Ci błędu, a nie masz pętli nieskończonej to możesz to przestawić na np. 15 cykli, jeśli się na tyle da ustawić.
Spróbuj napisać te trzy linie w jednej, np. tak:
Kod
RewriteCond %(REQUEST_FILENAME) ^$ !-d !-f !-l
REDIRECT_URL, REDIRECT_STATUS, and REDIRECT_QUERY_STRING są gwarantowane do ustawienia, i inne
nagłówki zostaną ustawione tylko jeśli istniały wcześniej do warunku błędu.
Musiałbyś przeczytać dokumentację potrzebnych ci rzeczy od deski do deski, aby załapać o co chodzi
z tymi nieskończonymi przekierowaniami.
W czym masz opakowany ten kod w:
Kod
<IfModule mod_rewrite.c>
# ...
</IfModule>
Czy w czymś innym?
Czy zmieniałeś może plik httpd.conf, czy jakikolwiek inny odpowiedzialny za te przekierowania, jeśli tak to podaj te zmiany.

Moje tłumaczenie oraz translate google trochę.
https://httpd.apache.org/docs/2.4/expr.html#varshttps://httpd.apache.org/docs/2.4/rewrite/intro.html#regexhttps://httpd.apache.org/docs/2.4/custom-error.htmlhttps://httpd.apache.org/docs/2.4/mod/mod_l....html#customloghttps://httpd.apache.org/docs/2.4/mod/mod_status.htmlhttps://httpd.apache.org/docs/2.4/rewrite/flags.htmlhttps://wiki.apache.org/httpd/RewriteCondhttps://www.w3.org/International/questions/...taccess-charsethttps://httpd.apache.org/docs/2.4/mod/quickreference.htmlhttps://httpd.apache.org/docs/current/mod/core.html#ifmodulehttps://httpd.apache.org/docs/2.4/mod/quickreference.html...* - ominięcie tekstu