2016-07-26 9 views
1

Das ist meine .htaccess-Datei:alle Anfragen Redirect auf index.php .htaccess

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . index.php [L] 

Ich bin 500 internen Server-Fehler. Nach diesem Befehl: Katze /var/log/apache2/error.log ich diese Fehler bekam:

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. 

Bitte helfen Sie mir diese aussortieren?

+0

Es existiert dort. –

+0

Dann kann nur diese Regel keine Rewrite-Schleife verursachen – anubhava

+0

Welche Version von Apache? – Will

Antwort

2

Ändern Sie Ihre Htaccess-Regel auf unten und dann wird es funktionieren.

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

Zur Kasse this serverfault answer.

Zusammenfassend stoppt [L] nur die Verarbeitung für den aktuellen Regelsatz und übergibt die umgeschriebene URL wieder an die URL-Parsing-Engine, die Ihren Regelsatz möglicherweise erneut anwenden. 10 mal. Und dann sagt Apache, hör auf.

Sie könnten einen Zustand in den nicht neu schreiben, wenn das Umschreiben bereits index.php gehen wird:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !=/index.php 
RewriteRule . index.php [L] 

Oder könnten Sie ENV:REDIRECT_STATUS, bevor Sie andere Regeln überprüfen und weitere Regeln stoppen angewendet:

RewriteEngine On 

RewriteCond %{ENV:REDIRECT_STATUS} 200 
RewriteRule^- [L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . index.php [L]