Sokrates: Zeichenfolge in einer URL mit mod rewrite ersetzen

Hallöle,

kann mir jemand helfen diese in Javascript geschriebene Ersetzung für die htaccess so umzuschreiben das die Zeichenfolge '?&' in '?' umgeschrieben wird, egal wo sie in dr URL vorkommt?

replace(/?&/g, "?")

ich hab sowas versucht:

RewriteRule ^/?&/$ /?/

RewriteRule ([^?&]*) /$1 [R=301]

RewriteRule .*?&$ ?  [R=301,QSA]

leider alles ohne Erfolg.

Vilen Dank im Voraus

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

    1. Hallo Hanes,

      ich hatte schon befürchtet das es nicht so geht, deswegen mache ich es auch eigentlich recht umständlich in php vorab. Es geht eigentlich darum, dass in bestimmten Fällen Variablen an die url angehangen werden und in anderen nicht.  Um dir URLs aber so kurz wie möglich zu halten blende ich die variablen nur ein wenn ein wert drin ist. in der regel ist 'vmnr' vorhanden wenn es weitere Variablen gibt aber halt nicht immer und dann beginnen die variablen mit einem hässlichen ?& weil ja die folgenden variablen mit & drangehangen werden. ist eigentlich nur kosmetik und in php krieg ich das schon hin, dachte mir vielleicht wäre das auch mit mod rewrite möglich.

      Danke für den hinweis.

      1. wie wärs mit

          
        $sQueryString = '';  
        foreach ($aQueryData as $key => $value) {  
           if(!empty($value)) {  
              $sQueryString .= (strpos($sQueryString,'?') !== FALSE) ? '&' : '?';  
              $sQueryString .= $key .'='. $value;  
           }  
        }  
        
        

        Gruß,
        Manu