web-dev-qa-db-ja.com

構成エラーの可能性があるため、リクエストが10の内部リダイレクトの制限を超えました

CakePHPアプリケーションで次のエラーが表示されます。

構成エラーの可能性があるため、要求が10の内部リダイレクトの制限を超えました。必要に応じて、「LimitInternalRecursion」を使用して制限を増やします。 「LogLevel debug」を使用して、バックトレースを取得します。リファラー: 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

36
Stephen

私はここで問題の解決策を見つけました:

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

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>
58
Stephen
//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]
2
Shal

このエラーは、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;

そして、それは適切に機能します。

1
datasn.io

私はこれを 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ファイルに

0
belem