In this short tutorial I’ll show you how to make permanent redirect from a www URL to non-www and vice versa. I’ll assume that you have superuser privileges, sudo or root access and Nginx already configured, as well as DNS records. More specifically, you need to have an A records for www.yourdomain.com and yourdomain.com .
Redirect non-www to www
To redirect users from a plain, non-www domain to a www domain, you need to add this snippet in your Nginx domain configuration file:
1 2 3 4 |
server { server_name yourdomain.com return 301 http://www.yourdomain.com$request_uri; } |
Save your configuration and exit. Before restarting Nginx make sure to test your configuration:
1 |
root@secure:~# nginx -t |
You should have something like this as output:
1 2 3 |
root@secure:~# nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful |
Now when everything is checked you can restart Nginx:
1 |
root@secure:~# service nginx restart |
Now, if you curl your plain domain, you should get a 301 Moved Permanently response:
1 2 3 4 5 6 7 8 |
root@secure:~# curl -I yourdomain.dev HTTP/1.1 301 Moved Permanently Server: nginx/1.8.0 Date: Fri, 26 Jun 2015 08:36:15 GMT Content-Type: text/html Content-Length: 184 Connection: keep-alive Location: http://www.yourdomain.dev/ |
Redirect www to non-www
In the previous example you saw how to redirect users from a plain non-ww domain to a www domain. However, if you want to redirect from a www to a plain non-www domain you need to add following snippet in your domain configuration file:
1 2 3 4 |
server { server_name www.yourdomain.com; return 301 $scheme://yourdomain.com$request_uri; } |
After any change in Nginx configuration files you should test it for syntax errors:
1 2 3 |
root@secure:~# nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful |
And if you curl the www domain you should get same 301 Moved Permanently response:
1 2 3 4 5 6 7 8 |
root@secure:~# curl -I www.yourdomain.dev HTTP/1.1 301 Moved Permanently Server: nginx/1.8.0 Date: Fri, 26 Jun 2015 08:52:26 GMT Content-Type: text/html Content-Length: 184 Connection: keep-alive Location: http://yourdomain.dev/ |
And that’s it. You have properly configured permanent redirect.
References:
Nginx rewrite non-www-prefixed domain to www-prefixed domain
Nginx config for www to non-www and non-www to www redirection
How To Redirect www to Non-www with Nginx on CentOS 7
Latest posts by Mirza Pasic (see all)
- Quick tip: How to delete a tag from a Git repository? - August 20, 2016
- Laravel Accessors and Mutators - December 17, 2015
- How to allow remote connections to PostgreSQL database server - December 15, 2015