Подтвердить что ты не робот

Запрос превысил предел 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

4b9b3361

Ответ 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;

И он работает правильно.