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.

About the Author

Picture of Oliver

Oliver Davies is a Web Developer, System Administrator and Drupal specialist based in the UK. He is a Senior Developer at Microserve and also provides freelance consultancy services for Drupal, Symfony and Laravel applications and Linux servers.


  • Currently no spare part-time capacity.
  • Currently no spare full-time capacity.