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.

9voto

Andriyun Punkte 508

Einzigartiges Format:

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

8voto

Drakes Punkte 21987

Wenn Sie den Domänennamen nicht fest codieren möchten, können Sie diesen Umleitungsblock verwenden. Die Domain ohne das führende www wird als Variable gespeichert $domain die in der Redirect-Anweisung wiederverwendet werden kann.

server {
    ...
    # Redirect www to non-www
    if ( $host ~ ^www\.(?<domain>.+) ) {
       rewrite ^/(.*)$ $scheme://$domain/$1;
    }
}

REF: Umleitung einer Subdomain mit einem regulären Ausdruck in nginx

5voto

Maoz Zadok Punkte 3817
location / {
    if ($http_host !~ "^www.domain.example"){
        rewrite ^(.*)$ $scheme://www.domain.example$1 redirect;
    }
}

3voto

steven Punkte 642

Ich bin mir nicht sicher, ob jemand bemerkt hat, dass es korrekt sein kann, eine 301 zurückzugeben, aber die Browser ersticken daran, wenn sie es tun

rewrite ^(.*)$ https://yoursite.example$1;

ist schneller als:

return 301 $scheme://yoursite.example$request_uri;

2voto

stevek-pro Punkte 13546

Geister-Blog

um nginx zu einer empfohlenen Methode mit return 301 $scheme://example.com$request_uri; mit Ghost zu arbeiten, müssen Sie Ihren Hauptserverblock hinzufügen:

proxy_set_header    X-Real-IP           $remote_addr;
proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
proxy_set_header    Host                $http_host;
proxy_set_header    X-Forwarded-Proto   $scheme;
proxy_set_header    X-NginX-Proxy       true;

proxy_pass_header   X-CSRF-TOKEN;
proxy_buffering     off;
proxy_redirect      off;

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