Jörg Kruse Webprogrammierung
und SEO seit 2005
Menü

Weiterleiten mit und ohne Query String

aktualisiert:
Bei der Weiterleitung von URLs mit und ohne Query String durch mod_rewrite Rules sind ein paar Besonderheiten zu beachten, je nachdem ob der Query String beibehalten, abgehangen oder neu angehangen werden soll.

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