Axel Richter: mod_rewrite: mehrere RewriteRule (s)

Beitrag lesen

Hallo,

RewriteEngine on
RewriteRule ^backend(.*) admin/index.php [L]
RewriteRule !(.(js|ico|gif|jpg|png|css)$) public/index.php

Einzeln Funktionieren die Regeln. Stehen jedoch beide Regeln in der Datei, so überschreibt immer die 2te die erste.

Also die zweite Regel erzeugt, auch alleine, eine Endlosschleife, wenn eine Ressource angefordert wird, die nicht auf .(js|ico|gif|jpg|png|css) endet.

Beispiel *.html wird in public/index.php umgeschrieben. Weil das im Directory-Kontext geschieht, läuft mod_rewrite nochmals drüber und schreibt public/index.php in public/index.php um usw.

Schau mal ins Apache Error Log. Da müsste sowas wie:

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.

stehen.

Jetzt gibt es mehrere Möglichkeiten. Die einfachste wäre, du nimmst die Endung php mit in die Liste auf. Wenn das nicht gehen sollte, müsstest Du mal genauer beschreiben, was Du erreichen willst.

viele Grüße

Axel