Hallo,
replace(/?&/g, "?")
ich hab sowas versucht:
RewriteRule ^/?&/$ /?/
RewriteRule ([^?&]*) /$1 [R=301]
RewriteRule .*?&$ ? [R=301,QSA]
RewriteRule ist keine Ersetzfunktion im eigentlichen Sinne, das hätte dir beim Studium der Anleitung eigentlich auffallen sollen. Du kannst nur Teile aus der Vorlage herausnehmen (mit runden Klammern) und im Ergebnis wieder einsetzen (mit $1 bis $9). Es kommt außerdem hinzu, dass RewriteRule nicht mit der kompletten URL arbeitet, namentlich die Parameter gehören nicht dazu.
Du solltest also erstmal klären, wo ?& in deinen URLs vorkommt, warum gleich mehrfach, warum es überhaupt ersetzt werden muss und ob dies nicht besser an der Quelle geschehen sollte, d.h. dort, wo die (vermeintlich?) kaputte URL herkommt.
Gruß, Hannes