579 Stimmen

Nginx no-www zu www und www zu no-www

Ich verwende nginx in der Rackspace-Cloud nach einer Anleitung Ich habe das Netz durchsucht und kann das Problem bisher nicht lösen.

Ich möchte www.mysite.example zu gehen, um mysite.example als normal in .htaccess aus SEO- und anderen Gründen.

Meine /etc/nginx/sites-available/www.example.com.vhost Konfiguration:

server {
       listen 80;
       server_name www.example.com example.com;
       root /var/www/www.example.com/web;

       if ($http_host != "www.example.com") {
                 rewrite ^ http://example.com$request_uri permanent;
       }

Ich habe auch versucht

server {
       listen 80;
       server_name example.com;
       root /var/www/www.example.com/web;

       if ($http_host != "www.example.com") {
                 rewrite ^ http://example.com$request_uri permanent;
       }

Ich habe es auch versucht. Die beiden zweiten Versuche geben Redirect Loop-Fehler.

if ($host = 'www.example.com' ) {
rewrite ^ http://example.com$uri permanent;
}

Mein DNS ist standardmäßig eingerichtet:

site.example 192.192.6.8 A type at 300 seconds
www.site.example 192.192.6.8 A type at 300 seconds

(Beispiel-IPs und -Ordner wurden als Beispiele und als Hilfe für künftige Benutzer verwendet). Ich verwende Ubuntu 11.

23voto

Eric Johnson Punkte 1024

Hier sehen Sie, wie Sie mehrere www- zu no-www-Servernamen umwandeln (ich habe dies für Subdomains verwendet):

server {
        server_name 
             "~^www\.(sub1.example.com)$"
             "~^www\.(sub2.example.com)$"
             "~^www\.(sub3.example.com)$";
         return 301 $scheme://$1$request_uri ;
}

19voto

Matt Janssen Punkte 1336

Ich habe das Beste aus all den einfachen Antworten kombiniert, ohne fest kodierte Bereiche.

301 permanente Weiterleitung von nicht-wwww nach www (HTTP oder HTTPS):

server {
    if ($host !~ ^www\.) {
        rewrite ^ $scheme://www.$host$request_uri permanent;
    }

    # Regular location configs...
}

Wenn Sie eine Umleitung von nicht-HTTPS, nichtwww zu HTTPS, www bevorzugen, können Sie diese gleichzeitig durchführen:

server {
    listen 80;

    if ($host !~ ^www\.) {
        rewrite ^ https://www.$host$request_uri permanent;
    }

    rewrite ^ https://$host$request_uri permanent;
}

16voto

VisioN Punkte 137670

Diese Lösung stammt aus meiner persönlichen Erfahrung. Wir verwendeten mehrere Amazon S3-Buckets und einen Server für die Weiterleitung non-www zu www passende Domänennamen S3-Richtlinie für den "Host"-Kopf .

Ich habe die folgende Konfiguration für nginx Server:

server {
    listen 80;
    server_name ~^(?!www\.)(?<domain>.+)$;
    return 301 $scheme://www.$domain$request_uri;
}

Dies entspricht allen Domänennamen, die auf den Server verweisen und mit whatever beginnen, aber www. und leitet weiter zu www.<domain> . Auf die gleiche Weise können Sie eine umgekehrte Umleitung von www zu non-www .

12voto

Kevin Nguyen Punkte 1649

Versuchen Sie dies

if ($host !~* ^www\.){
    rewrite ^(.*)$ https://www.yoursite.example$1;
}

Anderer Weg: Nginx no-www zu www

server {
  listen       80;
  server_name  yoursite.example;
  root /path/;
  index index.php;
  return       301 https://www.yoursite.example$request_uri;
}

und www zu no-www

server {
  listen       80;
  server_name  www.yoursite.example;
  root /path/;
  index index.php;
  return       301 https://yoursite.example$request_uri;
}

11voto

Ravindra Bhalothia Punkte 1702

Nicht-WWW auf www umleiten

Für einen einzelnen Bereich :

server {
        server_name example.com;
        return 301 $scheme://www.example.com$request_uri;
}

Für alle Domains :

server {
        server_name "~^(?!www\.).*" ;
        return 301 $scheme://www.$host$request_uri;
}

Umleitung von www auf nicht-wwww Für einzelne Domäne:

server {
        server_name www.example.com;
        return 301 $scheme://example.com$request_uri;
}

Für alle Domains :

server {
         server_name "~^www\.(.*)$" ;
         return 301 $scheme://$1$request_uri ;
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X