Я настраиваю локальную среду через MAMP сайта, который я отключил от сети пару месяцев назад, чтобы просмотреть некоторые старые функции на сайте, и в настоящее время я получаю следующую ошибку в моем файле apache_error.log ,
Request exceeded the limit of 10 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace., referer: http://localhost:8888/
Я искал решения в других сообщениях (например,
Запрос превысил предел 10 внутренних перенаправлений из-за возможной ошибки конфигурации), и я знаю, что это связано с моим файлом .htaccess. Тем не менее, я не смог выяснить, что не так, потому что мой файл довольно специфичен. Вот оно (я изменил название своего сайта на example.com из соображений конфиденциальности):
Options FollowSymlinks
RewriteEngine On
RewriteRule ^demo/ - [L]
RewriteRule ^\.htaccess$ - [F]
RewriteCond %{HTTP_HOST} ^example.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]
RewriteCond %{REQUEST_URI} =""RewriteRule ^.*$ example/public/index.php [NC,L]
RewriteCond %{REQUEST_URI} !^/public/.*$
RewriteRule ^(.*)$ example/public/$1
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^.*$ - [NC,L]
RewriteRule ^public/.*$ example/public/index.php [NC,L]
Это может быть длинным выстрелом, но если кто-то может взглянуть и предложить идею о том, что может быть причиной ошибки, я был бы всегда благодарен.
Я сталкивался с этим с большим количеством RewriteRules в моем .htaccess
файл. Самое простое, что нужно сделать, это добавить строку в .conf
файл для этого домена / сайта, чтобы увеличить предел, так как 10 немного жестко. использование LimitInternalRecursion
с последующим большим числом.
Например, у меня есть два сайта:
LimitInternalRecursion 100
(один сайт с множеством правил блокировки)
LimitInternalRecursion 500
(ajax-сайт SSL с большим количеством переадресаций, чтобы заставить вещи делать https вместо http)
Хорошее эмпирическое правило: чем больше RewiteRules, тем выше число, особенно если ваши RewriteRules выполняют много блокировок.
Если вы все еще хотите урезать RewritesRules, я бы пошел (для Apache 2.2):
<FilesMatch "\.(htaccess|htpasswd|ini|phps|psd|log|sh|eye)$">
Order Allow,Deny
Deny from all
</FilesMatch>
(Require all denied
для Apache 2.4)
вместо RewriteRule ^\.htaccess$ - [F]
для защиты .htaccess и других файлов (например, .ini, .log, .psd, .sh, .eye и т. д.). Это дает вам больше возможностей для блокировки дополнительных файлов.
ОБНОВИТЬ:
Читая сегодня документы Apache для чего-то другого, я узнал, что LimitInternalRecursion
будет принимать два числовых значения, первое число для максимального количества перенаправлений, второе для «насколько глубоко вложенные запросы могут быть вложенными» (читайте дальше LimitInternalRecursion), что-то вроде:
LimitInternalRecursion 100 20
будет лучше настроить директиву.
При наличии только одного числа Apache принимает это число для обоих значений, поэтому:
LimitInternalRecursion 500
Apache будет читать как:
LimitInternalRecursion 500 500
что немного экстрим …
Других решений пока нет …