如何重定向NGINX一个url如何重定向NGINX一个url(How to redirect a u

2019-05-13 15:33发布

我需要每一个重定向http://test.com请求http://www.test.com 。 如何才能做到这一点。

在服务器块我尝试添加

 rewrite ^/(.*) http://www.test.com/$1 permanent;

但在浏览器中,它说

  The page isn't redirecting properly

  Firefox has detected that the server is redirecting the request for 
  this address in a way that will never complete.

我的服务器块的样子

 server {
            listen       80;
            server_name  test.com;
            client_max_body_size   10M;
            client_body_buffer_size   128k;

            root       /home/test/test/public;
            passenger_enabled on;
            rails_env production;

            #rewrite ^/(.*) http://www.test.com/$1 permanent;
            #rewrite ^(.*)$ $scheme://www.test.com$1;

            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                    root   html;
            }
    }

Answer 1:

做你想做什么最好的办法是增加另一个服务器块:

server {
        #implemented by default, change if you need different ip or port
        #listen *:80 | *:8000;
        server_name test.com;
        return 301 $scheme://www.test.com$request_uri;
}

和编辑您的主服务器块SERVER_NAME变量如下:

server_name  www.test.com;

重要提示 :新server块是这样做的正确的方式, if是邪恶的 。 您必须使用地点和服务器,而不是if ,如果可能的。 Rewrite有时是邪恶过 ,所以用它替换return



Answer 2:

这里差不多另一个答案,但更改重写在HTTP向$方案如下所示:

server {
        listen 80;
        server_name test.com;
        rewrite     ^ $scheme://www.test.com$request_uri? permanent;
}

和编辑您的主服务器块SERVER_NAME变量如下:

server_name  www.test.com;

我不得不这样做是为了www.test.com重定向到test.com。



Answer 3:

首先确保你已经在HTTP重写模块安装Nginx的。 要安装此我们需要有PCRE库

如何安装PCRE库

如果上述提到的完成,或者如果你已经有了他们,然后只需添加下面的代码在你的nginx服务器块

  if ($host !~* ^www\.) {
    rewrite ^(.*)$ http://www.$host$1 permanent;
  }

为了去除WWW从每一个要求,你可以使用

  if ($host = 'www.your_domain.com' ) {
   rewrite  ^/(.*)$  http://your_domain.com/$1  permanent;
  }

所以你的服务器块的样子

  server {
            listen       80;
            server_name  test.com;
            if ($host !~* ^www\.) {
                    rewrite ^(.*)$ http://www.$host$1 permanent;
            }
            client_max_body_size   10M;
            client_body_buffer_size   128k;

            root       /home/test/test/public;
            passenger_enabled on;
            rails_env production;

            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                    root   html;
            }
    }


文章来源: How to redirect a url in NGINX