re:hi,
Wie wär's denn, wenn du die Reihenfolge der Regeln mal umdrehst?
Erst *_* in *-* umschreiben, Redirect machen.
Neuer Request, auf das Muster *_* passt die Anfrage nicht mehr, also wird nur die nachfolgende Regel ausgeführt, die aus *-* wieder *_* macht.
Und da sollte jetzt das Flag L gesetzt sein, damit es jetzt nicht mit *_* wieder intern mit der Umschreibung weitergeht, was dann wieder einen Redirect auslösen würde, ...
Bringt leider nichts. Er kommt egal in welcher Reihenfolge immer an den Punkt, dass er von *-* auf *_* die URL nicht einfach umschreibt und dann die richtige Datei nimmt sondern er stellt grundsätzlich ein neuen Request vom Apache an sich selbst und läuft alles nochmal durch.
Ich hab schon überlegt ob man den neuen Request nicht verhindern kann indem man statt /$1_$2.php einfach den kompletten Pfad (%{DOCUMENT_ROOT}/$1_$2.php) angibt - hat aber auch keinen Effekt.
Ebenfalls versucht:
RewriteCond %{IS_SUBREQ} !^true$
bringt aber auch nichts, weil's scheinbar nur für Subrequests anderer Module gilt und nicht für Subrequests von mod_rewrite an sich selbst.