Как я могу решить, что Запрос превысил лимит 10 внутренних перенаправлений (довольно специфический файл htaccess)?

Я настраиваю локальную среду через 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]

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

2

Решение

Я сталкивался с этим с большим количеством 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

что немного экстрим …

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]