dedlfix: Weiterleitung per htaccess, URL mit Parametern

Beitrag lesen

Tach!

schicke weiter zu example.org und hänge allen Stuff an:

RewriteRule ^(.*)$ http://example.org/$1 [R,L]
Allen, bis auf den Querystring. Das Flag QSA fehlt.
Äh. Also mein Apache macht es mit Querystring (wird von http:// zu https:// weiter geleitet). Und das ist auch zu erwarten, weil hier die Klammer in der RewriteRule alles vom Anfang bis zum Ende der GET-Anforderung umfasst. Da gehört der Querystring dazu...

Jein, der Querystring wird in dem Fall entgegen meiner Annahme angehängt, die Erklärung dazu ist aber eine andere. Im Handbuch bei RewriteRule im Kasten "What is matched?" steht, dass der Querystring nicht ausgewertet wird. Er befindet sich also nicht mit in $1. Etwas weiter unten im Kasten "Modifying the Query String" steht, dass er angehängt wird, solange man nicht selbst einen erstellt. Das Flag QSA braucht man also, wenn man bei der Angabe des Ziels ein ? verwendet. Man sieht ja öfter solche Umschreibungen

RewriteRule ^(.*)$ index.php?param=$1

und bei denen ist der ursprüngliche Querystring weg. Erst mit QSA wird er angefügt.

In deiner Regel ist mindestens ^ und $ überflüssig. Ein .* ist gierig und frisst sowieso alles. Man kann dann auch noch die Klammern weglassen und $0 verwenden. Damit hat man auch den gesamten Ausdruck, der ja wegen des gierigen .* den gesamten Pfad enthält.

dedlfix.