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!)