Weiterleiten mit und ohne Query String
Wenn die Ziel-URL in der RewriteRule keinen Query String enthält, so wird ein ggf. vorhandener Query String der Quell-URL automatisch wieder an die Ziel-URL angehangen. Beispiel in der .htaccess Datei von example.com:
RewriteRule ^(.*)$ https://example.org/$1 [R=301,L]
Folgende Weiterleitungen könnten z.B. daraus resultieren:
https://example.com/bar -> https://example.org/bar
https://example.com/bar?foo=1 -> https://example.org/bar?foo=1
Wird hingegen an die Ziel-URL ein neuer Query String angehangen, so ersetzt er den der Quell-URL:
RewriteRule ^(.*)$ https://example.org/$1?baz=42 [R=301,L]
https://example.com/bar -> https://example.org/bar?baz=42
https://example.com/bar?foo=1 -> https://example.org/bar?baz=42
Zur Erhaltung der Parameter des alten Query String kann das QSA-Flag eingesetzt werden:
RewriteRule ^(.*)$ https://example.org/$1?baz=42 [R=301,L,QSA]
https://example.com/bar -> https://example.org/bar?baz=42
https://example.com/bar?foo=1 -> https://example.org/bar?baz=42&foo=1
Möchte man im Gegenteil den alten Query String in jedem Fall entfernen, so erreicht man dies, indem an die Ziel-URL ein leerer Query String (d.h. ein einzelnes Fragezeichen) gehängt wird:
RewriteRule ^(.*)$ https://example.org/$1? [R=301,L]
https://example.com/bar -> https://example.org/bar
https://example.com/bar?foo=1 -> https://example.org/bar