Запрос превысил предел 10 внутренних переадресаций из-за вероятной ошибки конфигурации
Я получаю следующую ошибку в моем приложении CakePHP:
Запрос превысил предел 10 внутренних перенаправлений из-за возможной ошибки конфигурации. Используйте LimitInternalRecursion, чтобы увеличить лимит, если это необходимо. Используйте 'LogLevel debug', чтобы получить обратную трассировку., Referer: http://projectname.dev/
Мой .htaccess в корневой папке выглядит так:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
</IfModule>
и в папке приложения:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ webroot/ [L]
RewriteRule (.*) webroot/$1 [L]
</IfModule>
и в папке webroot:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /projectname
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>
Я следовал этому уроку:
http://book.cakephp.org/2.0/en/getting-started.html
Ответы
Ответ 1
Я нашел решение проблемы здесь:
http://willcodeforcoffee.com/2007/01/31/cakephp-error-500-too-many-redirects/
Файл .htaccess в webroot должен выглядеть так:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>
вместо этого:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /projectname
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>
Ответ 2
//Just add
RewriteBase /
//after
RewriteEngine On
//and you are done....
//so it should be
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
Ответ 3
Эта ошибка возникла у меня, когда я отлаживал функцию PHP header():
header('Location: /aaa/bbb/ccc'); // error
Если я использую относительный путь, он работает:
header('Location: aaa/bbb/ccc'); // success, but not what I wanted
Однако, когда я использую абсолютный путь, например /aaa/bbb/ccc
, он дает точную ошибку:
Запрос превысил предел 10 внутренних переадресаций из-за вероятных ошибка конфигурации. Используйте 'LimitInternalRecursion', чтобы увеличить если необходимо. Используйте "LogLevel debug", чтобы получить обратную трассировку.
Кажется, функция заголовка перенаправляет внутренне, не переходя HTTP, но это странно. После некоторых тестов и испытаний я нашел решение добавить exit после header():
header('Location: /aaa/bbb/ccc');
exit;
И он работает правильно.
Ответ 4
я решил это
http://willcodeforcoffee.com/2007/01/31/cakephp-error-500-too-many-redirects/
просто раскомментируйте или добавьте это:
RewriteBase /
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
в ваш файл .htaccess