Hallo erstmal,
Es soll eben immer "test=bar" durch "test=foo" ersetzt werden.
Kann mir jemand auf die Sprünge helfen? :)
vielleicht.
An der reg-ex für die 2. RewriteCond musst du evtl. noch feilen, bin da kein Experte drin, habs auch so wie hier nicht direkt probiert, aber es kommt ja aufs Funktionsprinzip an :-)
RewriteCond %{REQUEST_URI} ^(.*)([?|&]test=bar)+(.*)$
RewriteRule (.*) /umleiter.php [R=seeother,L,QSA]
Besonderes Interesse gilt ?test=bar oder &test=bar, und ([?|&]test=bar) ist vermutlich total flasch ;)
Hier ist die Bedingung dass "irgendwas mit "test=bar" in der URI an umleiter.php verweisen wird, alle anderen werden ignoriert.
Der wird als Status 303 Skript gestartet und bekommt die original-URI mit um was cleveres dawas anzufangen.
Dort verfährst du am besten wie helpercenter schon beschrieben hat und schliesst dort mit einen (zweiten) header("Location: neue-uri")
Das dürfte am flexibelsten sein, insbesondere für zukünftige Parameter-Umschiebereien.
Theoretisch könnte die RewriteRule auch so aussehen, was dir die RewriteCond und den "umleiter" spart. Bin aber auch hier nicht ganz sicher:
RewriteRule ^(.*)([?|&]test=bar)+(.*)$ index.php$1$3&test=bar [NC]
$1 und $2 sind die beiden (.*) Ausdrücke.
Teste die RegEx am besten ausserhalb von .htaccess mit einem normalen Skript mit preg_match() und ein paar Beispielstrings um zu sehen was dabei herauskommt.
Viel Spaß,
CirTap
You can have programs written fast, well, and cheap, but you only get to pick 2 ...
"Jeder der noch keinen Fehler gemacht hat, hat noch nie etwas Neues ausprobiert." (A. Einstein)