54

我的 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

4

6 回答 6

94

我刚刚在这里找到了解决问题的方法:

https://willcodeforcoffee.com/cakephp/2007/01/31/cakephp-error-500-too-many-redirects.html

webroot 中的 .htaccess 文件应如下所示:

<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>
于 2013-04-06T12:26:56.250 回答
9
//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]
于 2018-03-22T14:11:06.177 回答
2

我通过 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 文件

于 2019-08-22T10:28:16.300 回答
1

我在调试 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,这很奇怪。经过一番测试和尝试,我找到了在header()之后添加exit的解决方案:

header('Location: /aaa/bbb/ccc');
exit;

它工作正常。

于 2016-05-13T04:05:19.790 回答
1

按照 cakePHP 官方文档,.htaccess 应该是这样的:

https://book.cakephp.org/2/en/installation/url-rewriting.html

   <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^(.*)$ index.php [QSA,L]
    </IfModule>
于 2021-07-11T08:58:55.700 回答
0

只需删除内部 .htaccess 文件中的重写基础即可修复我的问题。就像在我的根目录中有一个 htaccess 文件只是链接到我的根文件夹中的公共目录中的一个索引页面然后我有另一个 htaccess 文件将每个请求重写到同一个公共文件夹中的索引页面,并删除 RewriteBase 修复矿 。如下所示

这是根目录中的第一个 .htaccess 文件

于 2021-10-05T02:01:41.537 回答