web-dev-qa-db-fra.com

Apache 2.4 - La requête a dépassé la limite de 10 redirections internes en raison d'une erreur de configuration probable

J'utilise Apache 2.4 (64 bits) et PHP 5.4.15 sur Windows Server 2008 R2 Enterprise et j'ai constaté l'erreur suivante dans le journal des erreurs Apache:

AH00124: 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.

J'ai une installation multisite de WordPress en cours d'exécution et je pense que l'erreur provient d'une erreur dans les réécritures htaccess.

En regardant ce message: La requête a dépassé la limite de 10 redirections internes en raison d’une erreur de configuration probable.?

Ils suggèrent de remplacer ceci:

# BEGIN Wordpress
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /index.php [L]
</IfModule>
# END WordPress

avec ce morceau de code, gracieuseté de Scott Yang:

<IfModule mod_rewrite.c>
   RewriteEngine On
   RewriteBase /
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteRule ^(.+)$ /index.php/$1 [L,QSA]
</IfModule>

Cependant, mon htaccess WordPress est un peu différent, je ne veux donc pas simplement remplacer mon code au cas où je remplacerais par inadvertance quelque chose dont j'ai besoin.

Voici mon htaccess:

# BEGIN WordPress
<IfModule mod_rewrite.c>
Options +FollowSymLinks -MultiViews
Header set Access-Control-Allow-Origin "*"
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]
</IfModule>
# END WordPress

Quelqu'un peut-il suggérer ce que je dois changer?

16
iltdev

Vous commencez probablement à boucler en raison de ces règles:

RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]

Il suffit de commenter et d'essayer à nouveau dans un nouveau navigateur.

13
anubhava

Ce problème peut être dû à des demandes de certains fichiers qui n'existent pas. Par exemple, les demandes de fichiers dans wp-content/uploads/où le fichier n'existe pas.

Si telle est la situation que vous rencontrez, vous pouvez résoudre le problème en accédant à .htaccess et en modifiant cette ligne:

RewriteRule ^(wp-(content|admin|includes).*) $1 [L]

à:

RewriteRule ^(wp-(content|admin|includes).*) - [L]

Le problème sous-jacent est que la règle ci-dessus déclenche une réécriture sur la même URL avec une barre oblique à l'avant et, en raison d'une réécriture, la demande nouvellement réécrite repasse à travers les règles et la même règle est déclenchée. En remplaçant "$ 1" par "-" sur cette ligne, aucune réécriture ne se produit et le processus de réécriture ne reprend donc pas avec la même URL.

Il est possible qu'il y ait une différence dans la manière dont Apache 2.2 et 2.4 gèrent cette situation de différence unique, c'est-à-dire un slash devant, et c'est pourquoi les règles par défaut fournies par WordPress ne fonctionnent pas parfaitement.

23
Justin Samuel

Résolu cela en ajoutant ce qui suit 

RewriteCond %{ENV:REDIRECT_STATUS} 200 [OR]
 RewriteCond %{REQUEST_FILENAME} -f [OR]
 RewriteCond %{REQUEST_FILENAME} -d
 RewriteRule ^ - [L]
0
Tarun Gupta