Auflösung des Rätsels
bearbeitet von RaketenwilliDas Handbuch ist an der Stelle „missverstehbar“.
~~~
RewriteEngine On
RewriteRule (.*) https://www.example.org%{REQUEST_URI}
~~~
In den Falle, dass die Zieladresse eine vollständige und absolute URI ist (erkennbar daran, dass diese mit dem Protokoll beginnt) wird die Query nachträglich bei der Umleitung angehangen.
Mit
~~~
LogLevel debug rewrite:trace8
~~~~
in der Config des Servers kann man das im Error-Log nachlesen:
~~~
… applying pattern '(.*)' to uri '/'
… rewrite '/' -> 'https://example.org/'
… explicitly forcing redirect with https://www.example.org/
… escaping https://www.example.org/ for redirect
… copying foo=bar to query string for redirect
… redirect to https://www.example.org/?foo=bar [REDIRECT/301]
~~~
Gegenbeispiel mit relativer URL:
~~~
RewriteEngine On
RewriteRule .* /router.php%{REQUEST_URI}
~~~
In diesem Fall wird die query (angeblich: ich habe das nicht selbst getestet) nicht hinzugefügt. Ebenso nicht, wenn man dieses Verhalten mit dem Parameter `QSD` explizit abschaltet:
~~~
RewriteRule (.*) https://example.org%{REQUEST_URI} [QSD]
~~~
Mit dem Parameter `QSA` kann man es aber ebenso auch dann erzwingen, wenn das Ziel der Umleitung eine relative URL ist.
**Merkregel:** „Q“ wie **q**uery, „s“ wie **s**hold, „D“ wie **d**elete, „A“ wie **a**ppend.
Es gibt auf meinen Bugreport hin einen [Revisionseintrag zum Handbuch](https://svn.apache.org/viewvc?view=revision&revision=1901487), wahrscheinlich wird die von Rolf genannte Stelle geändert.
Ich würde jetzt dazu neigen, das Verhalten nicht dem Zufall zu überlassen, sondern auch zum Zweck der „Selbstdokumentation“ diese Parameter (QSD oder QSA) stets angeben, statt mich auf irgendwelche Defaults zu verlassen.
Jedenfalls in künftigen Projekten.
Vollständig sieht die Rewrite-Role dann so aus:
~~~
RewriteRule (.*) https://www.example.org%{REQUEST_URI} [END,QSA,R=permanent]
~~~
* END - Bearbeiten der Regeln abbrechen
* QSA - Query anhängen
* R=permanent - Mit HTTP-Statuscode 301 „Moved Permanently“
Auflösung des Rätsels
bearbeitet von RaketenwilliDas Handbuch ist an der Stelle „missverstehbar“.
~~~
RewriteEngine On
RewriteRule (.*) https://www.example.org%{REQUEST_URI}
~~~
In den Falle, dass die Zieladresse eine vollständige und absolute URI ist (erkennbar daran, dass diese mit dem Protokoll beginnt) wird die Query nachträglich bei der Umleitung angehangen.
Mit
~~~
LogLevel debug rewrite:trace8
~~~~
in der Config des Servers kann man das im Error-Log nachlesen:
~~~
… applying pattern '(.*)' to uri '/'
… rewrite '/' -> 'https://example.org/'
… explicitly forcing redirect with https://www.example.org/
… escaping https://www.example.org/ for redirect
… copying foo=bar to query string for redirect
… redirect to https://www.example.org/?foo=bar [REDIRECT/301]
~~~
Gegenbeispiel mit relativer URL:
~~~
RewriteEngine On
RewriteRule .* /router.php%{REQUEST_URI}
~~~
In diesem Fall wird die query (angeblich: ich habe das nicht selbst getestet) nicht hinzugefügt. Ebenso nicht, wenn man dieses Verhalten mit dem Parameter `QSD` explizit abschaltet:
~~~
RewriteRule (.*) https://example.org%{REQUEST_URI} [QSD]
~~~
Mit dem Parameter `QSA` kann man es aber ebenso auch dann erzwingen, wenn das Ziel der Umleitung eine relative URL ist.
**Merkregel:** „Q“ wie **q**uery, „s“ wie **s**hold, „D“ wie **d**elete, „A“ wie **a**ppend.
Es gibt auf meinen Bugreport einen [Revisionseintrag zum Handbuch](https://svn.apache.org/viewvc?view=revision&revision=1901487), wahrscheinlich wird die von Rolf genannte Stelle geändert.
Ich würde jetzt dazu neigen, das Verhalten nicht dem Zufall zu überlassen, sondern auch zum Zweck der „Selbstdokumentation“ diese Parameter (QSD oder QSA) stets angeben, statt mich auf irgendwelche Defaults zu verlassen.
Jedenfalls in künftigen Projekten.
Vollständig sieht die Rewrite-Role dann so aus:
~~~
RewriteRule (.*) https://www.example.org%{REQUEST_URI} [END,QSA,R=permanent]
~~~
* END - Bearbeiten der Regeln abbrechen
* QSA - Query anhängen
* R=permanent - Mit HTTP-Statuscode 301 „Moved Permanently“
Auflösung des Rätsels
bearbeitet von RaketenwilliDas Handbuch ist an der Stelle „missverstehbar“.
~~~
RewriteEngine On
RewriteRule (.*) https://www.example.org%{REQUEST_URI}
~~~
In den Falle, dass die Zieladresse eine vollständige und absolute URI ist (erkennbar daran, dass diese mit dem Protokoll beginnt) wird die Query nachträglich bei der Umleitung angehangen.
Mit
~~~
LogLevel debug rewrite:trace8
~~~~
in der Config des Servers kann man das im Error-Log nachlesen:
~~~
… applying pattern '(.*)' to uri '/'
… rewrite '/' -> 'https://example.org/'
… explicitly forcing redirect with https://www.example.org/
… escaping https://www.example.org/ for redirect
… copying foo=bar to query string for redirect
… redirect to https://www.example.org/?foo=bar [REDIRECT/301]
~~~
Gegenbeispiel mit relativer URL:
~~~
RewriteEngine On
RewriteRule .* /router.php%{REQUEST_URI}
~~~
In diesem Fall wird die query nicht hinzugefügt. Ebenso nicht, wenn man dieses Verhalten mit dem Parameter `QSD` explizit abschaltet:
~~~
RewriteRule (.*) https://example.org%{REQUEST_URI} [QSD]
~~~
Mit dem Parameter `QSA` kann man es aber ebenso auch dann erzwingen, wenn das Ziel der Umleitung eine relative URL ist.
Es gibt auf meinen Bugreport einen [Revisionseintrag zum Handbuch](https://svn.apache.org/viewvc?view=revision&revision=1901487), wahrscheinlich wird die von Rolf genannte Stelle geändert.
Ich würde jetzt dazu neigen, das Verhalten nicht dem Zufall zu überlassen, sondern auch zum Zweck der „Selbstdokumentation“ diese Parameter (QSD oder QSA) stets angeben, statt mich auf irgendwelche Defaults zu verlassen.
Jedenfalls in künftigen Projekten.
Vollständig sieht die Rewrite-Role dann so aus:
~~~
RewriteRule (.*) https://www.example.org%{REQUEST_URI} [END,QSA,R=permanent]
~~~
* END - Bearbeiten der Regeln abbrechen
* QSA - Query anhängen
* R=permanent - Mit HTTP-Statuscode 301 „Moved Permanently“
Auflösung des Rätsels
bearbeitet von RaketenwilliDas Handbuch ist an der Stelle „missverstehbar“.
~~~
RewriteEngine On
RewriteRule (.*) https://www.example.org%{REQUEST_URI}
~~~
In den Falle, dass die Zieladresse eine vollständige und absolute URI ist (erkennbar daran, dass diese mit dem Protokoll beginnt) wird die Query nachträglich bei der Umleitung angehangen.
Mit
~~~
LogLevel debug rewrite:trace8
~~~~
in der Config des Servers kann man das im Error-Log nachlesen:
~~~
… applying pattern '(.*)' to uri '/'
… rewrite '/' -> 'https://example.org/'
… explicitly forcing redirect with https://example.org/
… escaping https://example.org/ for redirect
… copying foo=bar to query string for redirect
… redirect to https://example.org/?foo=bar [REDIRECT/301]
~~~
Gegenbeispiel mit relativer URL:
~~~
RewriteEngine On
RewriteRule .* /router.php%{REQUEST_URI}
~~~
In diesem Fall wird die query nicht hinzugefügt. Ebenso nicht, wenn man dieses Verhalten mit dem Parameter `QSD` explizit abschaltet:
~~~
RewriteRule (.*) https://example.org%{REQUEST_URI} [QSD]
~~~
Mit dem Parameter `QSA` kann man es aber ebenso auch dann erzwingen, wenn das Ziel der Umleitung eine relative URL ist.
Es gibt auf meinen Bugreport einen [Revisionseintrag zum Handbuch](https://svn.apache.org/viewvc?view=revision&revision=1901487), wahrscheinlich wird die von Rolf genannte Stelle geändert.
Ich würde jetzt dazu neigen, das Verhalten nicht dem Zufall zu überlassen, sondern auch zum Zweck der „Selbstdokumentation“ diese Parameter (QSD oder QSA) stets angeben, statt mich auf irgendwelche Defaults zu verlassen.
Jedenfalls in künftigen Projekten.