8

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
  • 225
  • 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

21

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
  • 23,934
  • 27
  • 112
  • 191
El Yobo
  • 14,464
  • 5
  • 57
  • 77
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
  • 932
  • 2
  • 9
  • 15