Nginx - Redirect Domain Trailing Dot

2019-06-19 07:32发布

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?

标签: nginx
2条回答
唯我独甜
2楼-- · 2019-06-19 08:17

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

查看更多
小情绪 Triste *
3楼-- · 2019-06-19 08:28

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.

查看更多
登录 后发表回答