9

I want to redirect the site ALWAYS to www.site.com. However, I am not sure as to how to get the WWW to always show up in front should say someone type in the domain without the www.

EDIT:

server {
        listen  80;
        server_name  site.com;
        rewrite ^(.*) https://www.site.com$1 permanent;
}

server {
    listen       80;
    server_name  www.site.com;
    #rewrite ^(.*) https://www.site.com$1 permanent;
    root /home/site/public_html;

        listen       443 ssl;

If I type in site.com it goes to https://www.site.com = SUCCESS

If I type in site.com/index.php it goes to http://www.site.com = NO SSL

Ideas?

Jake Thomas
  • 105
  • 2
  • 3
  • 6

2 Answers2

27

It's better to use return instead of rewrite, because it's faster.

server {
    listen 80;
    server_name     example.com;
    return          301 http://www.example.com$request_uri;
}

server {
    listen 80;
    server_name     www.example.com;
    [...]
}

This way, we also send the client a proper status code, so that he asks the right domain in the next request.

Pekz0r
  • 103
  • 3
moestly
  • 1,138
  • 8
  • 10
3

You're doing it the hard way. Here's the easy way.

server {
    listen 80;
    server_name  example.com;
    rewrite ^(.*) http://www.example.com$1 permanent;
}

server {
    listen 80;
    server_name  www.example.com;
    #The rest of your configuration goes here#
}
moestly
  • 1,138
  • 8
  • 10
ceejayoz
  • 32,469
  • 7
  • 81
  • 105