Nginx neu schreiben, um zu verhindern, dass „www“ nicht funktioniert

Nginx neu schreiben, um zu verhindern, dass „www“ nicht funktioniert

Ich habe mir viele angesehenSE-Threadsund verschiedeneGoogle-Suchanfragenund kann nicht herausfinden, warum ich nicht auf meinen Nginx-Server umleiten www.mysite.comkann mysite.com.

Der 1. Serverblock führt die http://mysite.info->- https://mysite.infoUmleitung wie erwartet durch. Ich bin mir also nicht sicher, warum der 2. Serverblock nicht dasselbe für das www.mysite.info-> tut mysite.info.

Hier ist der relevante Teil meiner nginx.conf-Datei:

server {
    server_name mysite.info;
    rewrite ^ https://$server_name$request_uri? permanent;
}

server {
    server_name www.mysite.info;
    rewrite ^ https://mysite.info$request_uri? permanent;
}

server {
    listen   443;
    ssl    on;
    server_name mysite.info;
    # other directives, handling PHP, etc.
}

Irgendwelche Ideen, was schief läuft?

Antwort1

Sie leiten zu weiter $server_name, das sich www.mysite.infoim zweiten serverBlock befindet. Dadurch wird also lediglich zu HTTPS weitergeleitet, der Host wird nicht geändert.

rewrite ^ https://mysite.info$request_uri? permanent;

Dadurch werden sowohl die Änderung des Hosts als auch die Änderung zu HTTPS behandelt.

Wenn Sie möchten, dass die Umleitung protokollunabhängig ist, wäre folgender Ansatz besser:

rewrite ^ $scheme://mysite.info$request_uri? permanent;

Auf neueren Versionen von Nginx funktioniert dies auch (und sollte etwas schneller sein):

return 301 $scheme://mysite.info$request_uri;

verwandte Informationen