I'm rewriting URLs in nginx after a relaunch. In the old site I had query parameters in the URL to filter stuff e.g.
http://www.example.com/mypage.php?type=4
The new page doesn't have these kind of parameters. I want to remove them and rewrite the URLs to the main page, so that I get:
http://www.example.com/mypage/
My rewrite rule in nginx is:
location ^~ /mypage.php { rewrite ^/mypage.php$ http://www.example.com/mypage permanent; }
But with this rule the parameter is still appended. I thought the $
would stop nginx from processing further values... any ideas? All other questions deal with how to add parameters - I just want to remove mine :)
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 love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With