Remove parameters within nginx rewrite Remove parameters within nginx rewrite nginx nginx

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;}


To drop a parameter from a URL, in this case coupon=xxx:

if ($query_string ~ "^(.*)coupon=(.*)$") {    rewrite ^(.*)$ $uri? permanent;}

Note that this will drop all parameters if the statement matches. $uri is the original request without parameters.


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)