Hallo Mathias,
Somit leitet /bla/test letztlich wieder auf /bla/test weiter und der Browser wird endlos weitergeleitet. Wie kann das verhindert werden?
RewriteEngine On
RewriteBase /
RewriteRule (.+).html$ /$1 [redirect=permanent,last,nosubreq]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.+) $1.html [last]
Damit sollte es klappen. Denn: Sobald die letzte RewriteRule erfolgreich war, wird zwansgläufig ein virtual Subrequest mit der neuen URI gestartet (es sei denn, es ist ein Redirect oder so etwas). Das kann man nicht deaktivieren, so funktioniert mod_rewrite. nosubreq dagegen sagt nur, dass diese Regel *übersprungen* werden soll, falls ein Subrequest durchgeführt wird. Aus der Doku:
| This flag forces the rewriting engine to skip a rewriting rule if the current request is an internal sub-request.
Daher muss das nosubreq zur Redirect-Regel und nicht zur HTML-Anfüge-Regel.
Viele Grüße,
Christian