Remove parameters within nginx rewrite
Had a similar problem, after a lot of searching the answer presented itself in the rewrite docs.
If you specify a ? at the end of a rewrite then Nginx will drop the original $args (arguments)
So for your example, this would do the trick:
location ^~ /mypage.php { rewrite ^/mypage.php$ http://www.example.com/mypage? permanent;}
If you want to remove a specified parameter from url,
# in location directive: if ($request_uri ~ "([^\?]*)\?(.*)unwanted=([^&]*)&?(.*)") { set $original_path $1; set $args1 $2; set $unwanted $3; set $args2 $4; set $args ""; rewrite ^ "${original_path}?${args1}${args2}" permanent;}
then visit your_site.com/a=1&unwanted=2&c=3
step1. server gives an 302 response, indicating the url is match.
step2. client re-send a request with the new url ( with the parameter removed)