xinglinkedinenvelopebubblesgoogleplusfacebooktwitterfeedgithub

How to redirect www to naked domain and vice versa with NGINX?

3rd February 2014 | by Adam Beres-Deak | nginx, redirection

One thing almost every website needs is redirection. Many websites decide to serve their visitors both over www and non-www site, just in case the user types it into the browser. But for SEO it's bad, when you have the same site over two different domains. Here is, how to solve this issue with NGINX.

Redirecting www to non-www with if statement

server {
    listen 80;

    server_name www.example.com example.com;

    if ($host = 'www.example.com' ) {
        # redirecting www.example.com to example.com
        # path, query string are retained
        rewrite  ^/(.*)$  http://example.com/$1  permanent;
    }
}

Please note that if is considered evil inside NGINX configuration, but it is perfectly OK in this case. The official docs say, that there are two cases when if is "100% safe":

if ($request_method = POST ) {
    return 405;
}
if ($args ~ post=140){
    rewrite ^ http://example.com/ permanent;
}

Redirecting www to non-www without if statement

The trick in this case is that we have to define two server blocks.

server {
    listen       80;
    server_name  www.example.com;

    # redirecting www.example.com to example.com
    # path, query string are retained
    return       301 http://example.com$request_uri;
}

server {
    listen       80;
    server_name  example.com;
    ...
}

Redirecting non-www to www

server {
    listen       80;
    server_name  example.com;

    # redirecting example.com to www.example.com
    # path, query string are retained
    return       301 http://www.example.com$request_uri;
}

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

by Adam Beres-Deak

| Share | Tweet | Share | Share

Latest blog posts

Displaying icons with custom elements 14th October 2015

Plain JavaScript event delegation 26th January 2015

After the first year of blogging - what happened on my blog in 2014? 1st January 2015

Better webfont loading with using localStorage and providing WOFF2 support 18th December 2014

Worth watching: Douglas Crockford speaking about the new good parts of JavaScript in 2014 20th October 2014