9

How can I redirect "http://domain.com." to "http://domain.com" with Nginx?

What's the recommended way of doing this? Regex or is there any other options?

user2168809
  • 285
  • 1
  • 3
  • 8
  • see this post about danger of trailing dot in domain: http://saynt2day.blogspot.com/2013/03/danger-of-trailing-dot-in-domain-name.html – Taha Jahangir Apr 16 '13 at 03:14

2 Answers2

22

The following snippet does this in a general way, without having to hard code any hostnames (useful if your server config handles requests for multiple domains). Add this inside any server definition that you need to.

if ($http_host ~ "\.$" ){
    rewrite ^(.*) $scheme://$host$1 permanent;
}

This takes advantage of the fact (pointed out by Igor Sysoev) that $host has the trailing dot removed, while $http_host doesn't; so we can match the dot in $http_host and automatically use $host for the redirect.

Slava Fomin II
  • 26,865
  • 29
  • 124
  • 202
El Yobo
  • 14,823
  • 5
  • 60
  • 78
0

You will need to use Regex.

server {
    listen       80;
    server_name  domain.com.WHATEVER, domain.com.WHATEVER-2, domain.com.WHATEVER-3;
    rewrite  ^  $scheme://domain.com$request_uri?  permanent;
}

From: http://wiki.nginx.org/HttpRewriteModule

redirect - returns temporary redirect with code 302; it is used if the substituting line begins with http:// permanent - returns permanent redirect with code 301

Robinho
  • 1,011
  • 2
  • 10
  • 17