2011-01-05 8 views
2

Meine Ordnerstruktur:mod_rewrite - Prevent mehr Umleitungen

Jetzt habe ich das Problem, dass mein Apache in einigen Fällen zu oft neu schreibt interne, dass ich ein 500-Server-Fehler erhalten, hier das Protokoll:

[Wed Jan 05 17:51:54 2011] [error] [client 127.0.0.1] Request exceeded the limit of 3 internal redirects due to probable configuration error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace. 
[Wed Jan 05 17:51:54 2011] [debug] core.c(3046): [client 127.0.0.1] r->uri = /nameoftherootfolder/public/index.php 
[Wed Jan 05 17:51:54 2011] [debug] core.c(3052): [client 127.0.0.1] redirected from r->uri = /nameoftherootfolder/public/index.php 
[Wed Jan 05 17:51:54 2011] [debug] core.c(3052): [client 127.0.0.1] redirected from r->uri = /nameoftherootfolder/public/index.php 
[Wed Jan 05 17:51:54 2011] [debug] core.c(3052): [client 127.0.0.1] redirected from r->uri = /nameoftherootfolder/nothere/ 

Meine .htaccess:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteRule ^.*$ index.php [NC,L] 

die index.php alle Anforderungen verarbeitet und behandeln auch die Zube wenn ssed url ist falsch, z. existiert nicht.

Es funktioniert, wenn die zugegriffene URL existiert aber es die URL ist "falsch" bekomme ich diesen Fehler. ich dies nur, da ich einen Apache-Alias ​​gesetzt:

Alias /nameoftherootfolder/ "C:/somepathshere/WAMP/www/nameoftherootfolder/public/" 

<Directory "C:/somepathshere/WAMP/www/nameoftherootfolder/public/"> 
    Options Indexes FollowSymLinks MultiViews 
    AllowOverride all 
     Order allow,deny 
    Allow from all 
</Directory> 

Wie kann ich jetzt zu viele interne Umleitungen mit Apache verhindern? Gibt es vielleicht einen RewriteCond? Ich benutze Apache 2.2.11.

Edit:

Wenn ich legte ein index.php/ in dem uri es funktioniert, aber das ist SEO unfreundlich, benutzerunfreundlich und sieht schrecklich aus, zum Beispiel anfordern. http://localhost/nameoftherootfolder/index.php/nothere/ oder http://localhost/nameoftherootfolder/index.php/index/

Edit # 2:

Nachdem ich

RewriteBase /nameoftherootfolder/ 

hinzugefügt funktioniert es wissen.

Antwort

6

Nachdem ich hinzugefügt

RewriteBase /nameoftherootfolder/ 

es funktioniert jetzt.

1

Sie müssen Anrufe von index.php selbst ausschließen, um eine Endlosschleife zu vermeiden.

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-s 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !^/index\.php$ 
RewriteRule ^.*$ index.php [NC,L] 
+0

Hm ... es scheint keinen Effekt zu haben ... immer noch diesen Fehler mit dem gleichen in der Apache-Fehlerprotokoll. – Poru

+0

@Poru versuchen Sie die aktualisierte Version, es ist eine vollständige Htaccess-Datei –

+0

Ich versuchte, das gleiche Ergebnis ... vielleicht ist es ein Problem des Alias? Übrigens. Schau dir den obigen Schnitt an. – Poru

0

In meinem Fall hatte ich eine Site auf einer Subdomain unter dem Ordner einer anderen Site in Apache konfiguriert. Das hat meine Fehler behoben: