ursus contionabundo: Ja. Da hab ich Unsinn geschrieben.

Beitrag lesen

Also, ich habe nachgelesen

When the replacement URI contains a query string, the default behavior of RewriteRule is to discard the existing query string, and replace it with the newly generated one. Using the [QSA] flag causes the query strings to be combined.

Übersetzt:

Das voreingestellte Verhalten ist, dass der existierende Query-String vergessen und durch den neu generierten Query-String ersetzt wird.

Mein Zeug mit POST und Files war also Unsinn!

Das Erzeugen eines neuen Query-Strings geschieht, wenn man folgendes tut:

RewriteRule ^/orte/(.*)/(.*) /orte.php?ort=$1&ot=$2

Aber auch schon bei:

RewriteRule ^(.*)$ htts://www.example.com/$1 [END,R=permanent]

Beispiel:

http://example.com/orte/berlin/lichtenberg 

würde zu:

http://example.com/orte.php?ort=berlin&ot=lichtenberg

Bis hierher wäre alles gut. Will man hier aber tatsächlich:

http://example.com/orte/berlin/lichtenberg?foo=bar

zu

/orte.php?ort=berlin&ot=lichtenberg&foo=bar

verwandeln lassen, dann ist das QSA notwendig:

RewriteRule ^/orte/(.*)/(.*) /orte.php?ort=$1&ot=$2 [QSA]

POST, COOKIES (+SESSION), FILES

Diese Daten (Für die SESSION: Nur das Cookie!) bleiben unverändert bzw. werden beim angeforderten Redirect stets neu gesendet. (Ausnahmen können bestehen wenn beim Redirect ein Downgrade von HTTPS zu HTTP erfolgt!)