Using this rule in a virtual host configuration file leads to double escaping of the query parameters:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
For example:
http://example.com?f=hello%20world
Leads to
https://example.com?f=hello%2520world
Note the “%25” escaping the “%” sign. Why is this happening ?
Try to add the [NE] (noescape) tag at the end of the rewrite rule:
This happens because
&and?and some others are escaped by default in the rewrite process.