Nginx Redirects With Query String Arguments

31st January 2017

This is an example of how my Nginx configuration looked to redirect from an old domain to a new one, and also to redirect from the root domain to the canonical www subdomain.

server {
  listen 80;


  return 301$uri;

It also redirects the URI value, e.g. from to, but I noticed recently though that any the query string would be lost - e.g. would redirect to and the ?test would be dropped. The application that I built references images based on the query string, so I wanted these to be included within the redirect.

This was fixed by making a small change to my return statement.


return 301$uri;


return 301$uri$is_args$args;

$is_args is an empty string if there are no arguments, or a ? to signify the start of the query string. $args then adds the arguments ($query_string could also be used with the same result).

Here is an demo of it working on this website:


Questions? Comments? I’m @opdavies on Twitter.

Tags: nginx

About the Author

Picture of Oliver

Oliver Davies is a full-stack Web Developer and System Administrator based in the UK. He is a Senior Developer at Microserve and a part-time freelancer specialising in Drupal, Symfony and Laravel development and Linux systems administration.