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ß.