2014-03-31 3 views
12

Ich laufen Apache 2.4 (64bit) und PHP 5.4.15 auf Windows Server 2008 R2 Enterprise und haben den folgenden Fehler im Apache-Fehlerprotokoll bemerkt :Apache 2.4 - Request überschritten die Grenze von 10 internen Redirects aufgrund wahrscheinlich Konfigurationsfehler

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. 

ich habe eine Multi-Site von Wordpress installieren läuft und ich denke, der Fehler in den .htaccess Neufassungen von einem Fehler kommt.

in diesem Beitrag der Suche: Request exceeded the limit of 10 internal redirects due to probable configuration error.?

Sie schlagen vor, diese zu ersetzen:

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

mit diesem Stück Code, mit freundlicher Genehmigung von Scott Yang:

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

jedoch meine Wordpress htaccess sieht ein wenig anders aus, also möchte ich nicht einfach meinen Code ersetzen, nur für den Fall, dass ich versehentlich etwas ersetze, das ich brauche.

Hier ist meine .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 

Kann jemand empfehlen, was ich ändern muss?

Antwort

6

Sie sich einlassen Looping höchstwahrscheinlich aufgrund dieser Regeln:

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

einfach kommentieren Sie sie aus und versuchen Sie es erneut in einem neuen Browser.

+1

Dank folgenden durch Zugabe gelöst, anubhava. Ich gebe es und melde mich so bald wie möglich :) – iltdev

+0

Keine Freude, ich habe Angst. Es notiert immer noch den Fehler in den Protokollen :( – iltdev

+1

Kommentar aus 'RewriteRule^(wp- (Inhalt | admin | enthält).) $ 1 [L]' auch – anubhava

22

Dieses Problem kann durch Anforderungen für bestimmte Dateien verursacht werden, die nicht vorhanden sind. Zum Beispiel Anfragen nach Dateien in wp-content/uploads/wo die Datei nicht existiert.

Wenn dies die Situation Sie sehen, können Sie das Problem lösen, indem sie in .htaccess gehen und Ändern Sie diese Zeile:

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

zu:

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

Das zugrunde liegende Problem ist, dass Die obige Regel löst ein erneutes Schreiben auf die exakt gleiche URL mit einem Schrägstrich vor und da es ein Neuschreiben gab, geht die neu umgeschriebene Anfrage wieder durch die Regeln zurück und die gleiche Regel wird ausgelöst. Durch das Ändern der "$ 1" -Zeile dieser Zeile in "-" erfolgt kein Neuschreiben und daher beginnt der Neuschreibprozess nicht erneut mit derselben URL.

Es ist möglich, dass es einen Unterschied darin gibt, wie Apache 2.2 und 2.4 diese Situation von nur-Unterschied-ist-ein-Schrägstrich-in-Front handhaben, und deshalb funktionieren die Standardregeln von WordPress nicht perfekt.

+0

Danke Justin. Sehr informativ. Denken Sie also, dass es am besten ist, die Rewrite-Regel beizubehalten (mit einem - anstelle von $ 1), anstatt sie zu kommentieren? – iltdev

0

diese

RewriteCond %{ENV:REDIRECT_STATUS} 200 [OR] 
RewriteCond %{REQUEST_FILENAME} -f [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule^- [L] 
Verwandte Themen