Erweitert die Zeile mit der Condition um Options -MultiViews
Code:
Options -MultiViews
RewriteCond %{REQUEST_FILENAME} !-f
Damit schaltet ihr die Serveroption MultiViews, die automatisch versucht passende Dateien zu finden, aus. Alle anderen gesetzten Options werden durch das Ausschalten mit dem Minuszeichen '-' nicht angerührt. Wenn das Ausschalten per .htaccess nicht erlaubt ist, dann fragt den Hoster, dass er es abschaltet.
Solltet ihr MultiViews aus irgendeinem Grund gebrauchen, dann kommentiert die Zeile mit der Condition aus, dann werden allerdings alle evtl. vorhandenen statischen Dateien, die nicht weiter oben bereits mit FilesMatch ausgeschlossen wurden, also auch evtl. vorhandene statische html-Seiten, nach index.php umgeleitet, falls bei euch überhaupt welche existieren.
Options -MultiViews gehört eigentlich nicht über die RewriteCondition, sie kann direkt an den Anfang der .htaccess geschrieben werden, aber an diesem Platz funktioniert sie auch und erinnert so daran, warum sie eingefügt wurde.
Hier das Debugging einer RewriteRule, was mich der Sache näher gebracht hatte
PHP-Code:
add path info postfix: /home/www/test/test.xml -> /home/www/test/test.xml/mich-gibt-es-nicht.html
strip per-dir prefix: /home/www/test/test.xml/mich-gibt-es-nicht.html -> test.xml/mich-gibt-es-nicht.html
applying pattern '.*\.html$' to uri 'test.xml/mich-gibt-es-nicht.html'
RewriteCond: input='/home/www/test/test.xml' pattern='!-f' => not-matched
pass through /home/www/test/test.xml
add path info postfix ist der Übeltäter (meiner Meinung nach ein Bug des Apache-Moduls mod_rewrite)
So könnt ihr euer Rewriting debuggen
Code:
RewriteLog /home/log/rewrite/rewrite.log
RewriteLogLevel 5
in die httpd.conf