derda: Doppelter Mod_rewrite

Beitrag lesen

Hallo Forum,

ich habe ein Problem mit dem mod_rewrite des Apache Servers. Und zwar habe ich eine Homepage auf der ein paar tausend Dateien liegen die alle im Format abc_def.php sind wobei "abc" und "def" jeweils ein beliebiger String sind. Nun soll folgenes geschehen:
1. Alle Anfragen an *_*.php sollen per 301 auf *-*.php weitergeleitet werden (also aus Unterstrich mach Minus).
2. Da wir wegen des CMS nicht alle tausend Dateien umbenennen können müssen die Dateinamen weiterhin aber *_*.php bleiben. Es muss also eine zweite RewriteRule genau das Gegenteil von der ersten machen: Nämlich alle Anfragen die an *-*.php gehen intern auf *_*.php umschreiben.

Folgendes hab ich dazu gemacht:

<IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteRule ^(.*)-(.*).php$ /$1_$2.php [L]
 RewriteRule ^(.*)_(.*).php$ /$1-$2.php [R=permanent,L]
</IfModule>

Das Problem dabei: Es gibt eine Endlosschleife, weil der Apache scheinbar intern einen neuen Request an sich selbst stellt und dabei wieder seine eigenen Rules durchgeht. Ruft man also eine Datei *-*.php ab kriegt man wieder einen Redirekt zu genau der gleichen Datei.

Ich hab es auch schon mit ENV-Variablen versucht (in Zeile 3 nach L sowas wie ,E=WasHTML:yes und dann in Zeile 4 "RewriteCond  %{ENV:WasHTML}  !^yes$" - scheint aber auch nichts zu bringen weil meine Variable irgendwie immer leer bleibt)

Wer hat ne Idee wie man das machen kann?

Gruß.