it-swarm.com.de

So leiten Sie eine URL in NGINX um

Ich muss jede http://test.com Anfrage umleiten an http://www.test.com . Wie kann das gemacht werden?.

Im Serverblock habe ich versucht hinzuzufügen

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

aber im browser heißt es

  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.

mein Serverblock sieht aus wie

 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;
            }
    }
133
Amal Kumar S

Am besten fügen Sie einen weiteren Serverblock hinzu:

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;
}

Bearbeiten Sie die Variable server_name des Hauptserverblocks wie folgt:

server_name  www.test.com;

Wichtig : Ein neuer server -Block ist der richtige Weg, if ist böse =. Sie müssen Standorte und Server anstelle von if verwenden, wenn dies möglich ist. Rewrite ist manchmal auch böse , also ersetze es durch return.

267

Ähnlich wie bei einer anderen Antwort hier, aber ändern Sie das http beim Umschreiben in $ scheme wie folgt:

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

Bearbeiten Sie die Variable server_name des Hauptserverblocks wie folgt:

server_name  www.test.com;

Ich musste dies tun, um www.test.com zu test.com umzuleiten.

Stellen Sie zunächst sicher, dass Sie Nginx mit dem HTTP-Rewrite-Modul installiert haben. Um dies zu installieren, benötigen wir eine pcre-Bibliothek

Wie installiere ich die pcre Bibliothek?

Wenn die oben genannten erledigt sind oder wenn Sie sie bereits haben, fügen Sie einfach den folgenden Code in Ihren Nginx-Serverblock ein

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

Um www von jeder Anfrage zu entfernen, die Sie verwenden können

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

so sieht Ihr Serverblock aus

  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;
            }
    }
9
Amal Kumar S