Question

Redirect www to non www

  • Posted February 12, 2014

How do I redirect http://www.example.com to http://example.com?

I am using LEMP, Nginx, Wordpress.

Qn 1: To which file should I add the below code to?

server { server_name www.example.com; return 301 $scheme://example.com$request_uri; }

I have a few files in mind (I followed your tutorials)

  1. /etc/nginx/sites-available/wordpress
  2. /etc/nginx/sites-available/default

Qn 2: If I add the above code, must I still do the DNS part on CNAME (www and @)? Or can I skip this step?

Subscribe
Share

No need to waste time with nginx settings, simply go to your advanced DNS settings, add URL redirection from www to http://yoursite.com and set the redirection type as permanent.


Submit an answer
You can type!ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

The config looks good. Glad it’s working now! :]

Thanks FMCB and Kamal. I managed to get it to work. <br> <br>Steps I did were: <br>1) I added CNAME record (is this the DNS record you are referring to?) <br>2) I only added the 301 redirect to /etc/nginx/sites-available/default. <br>I left /etc/nginx/sites-available/wordpress untouched. <br>When I added the same code for both, I had an error. So I tried each files individually, and realised only the default file worked after I restarted nginx. <br> <br>this is my pastebin, please help me check if the code is ok. <br>http://pastebin.com/8s6n59m2 <br> <br>Thanks a lot!

Can you pastebin your current virtualhost config? You will need to add a DNS record so the browser knows what IP it should connect to.

when you open your vhost: /etc/nginx/sites-available/wordpress <br> <br>you will need to have server{ } twice. each block will have different things where the 2nd one carry the rest of the configurations. as I wrote for you above, it should be like that to redirect… <br> <br>server { <br>server_name www.domain.com; <br>rewrite ^(.) http://domain.com$1 permanent; <br>} <br> <br>server { <br>server_name domain.com; <br>#The rest of your configuration goes here# <br>} <br> <br>Adding CName record will allow your server to catch www only thus you can redirect from www to non www <br> <br>so in anyways you will have to add CName if you didn’t. <br> <br>do the same thing for the other vhost if you want to redirect it like I wrote: <br> <br>for /etc/nginx/sites-available/default: <br> <br>server { <br>server_name www.domain2.com; <br>rewrite ^(.) http://domain2.com$1 permanent; <br>} <br> <br>server { <br>server_name domain2.com; <br>#The rest of your configuration goes here# <br>} <br>

anyone knows the answer to this? thanks

Thanks for your reply! I got it to work by just by adding the CName record and without the server{…} portion. <br> <br>But what I really want to know is by adding the server{…} portion, do I still need to do the CName record? Because I actually want to do it through this method - i.e. to redirect through server {…} portion. <br> <br>If the answer is yes, I will know that such a method actually exists. and my next step would be to figure how to go about just adding the server{…} portion alone. Now I’m like a lost sheep. Because I have added CName record and it already works so i cant tell if the server {…} is actually working. <br> <br>thanks in advance!

I think you need to add www and @ CName record to make the domain catch www, <br> <br>also, I believe you need to have each vhost like the following code: <br> <br>server { <br> server_name www.domain.com; <br> rewrite ^(.*) http://domain.com$1 permanent; <br>} <br> <br>server { <br> server_name domain.com; <br> #The rest of your configuration goes here# <br>} <br> <br>for exp. look here: http://stackoverflow.com/questions/7947030/nginx-no-www-to-www-and-www-to-no-www