1.7 KiB
title | date | excerpt | tags | |
---|---|---|---|---|
Nginx Redirects With Query String Arguments | 2017-01-31 | How to redirect from an old domain to a new one, and also to redirect from the root example.com domain to the canonical www subdomain. |
|
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 example.com
domain to
the canonical www
subdomain.
server {
listen 80;
server_name example.com;
server_name my-old-domain.com;
server_name www.my-old-domain.com;
return 301 https://www.example.com$uri;
}
It also redirects the URI value, e.g. from http://example.com/test
to
http://example.com/test
, but I noticed recently though that any the query
string would be lost - e.g. http://example.com/?test
would redirect to
http://www.example.com
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.
Before:
return 301 https://www.example.com$uri;
After:
return 301 https://www.example.com$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: