Zahlungsmethoden Abuse

Wie man in Nginx von WWW auf nicht-WW umleitet

22.02.2022, 20:05


Um eine Website nach den SEO-Regeln zu optimieren, muss sie eine Domain haben. Eine Subdomain mit www wird als separate Domain betrachtet, falls sie nicht erreichbar ist, führt sie zu doppeltem Inhalt. Was das bedeutet. Duplikate - unerwünschte Elemente, die oft die Ursache für eine Verschlechterung der Position der Website in den Suchmaschinen sind. Deshalb lohnt es sich, eine Umleitung von der Domain www auf ohne www vorzunehmen. Also am Anfang wurde die Subdomain www verwendet, um dem Server zu signalisieren, dass er keinen Webserver bereitstellen kann und die Website gehostet wird. Jetzt ist dies nicht mehr notwendig. In diesem Artikel schauen wir uns an, wie man einen Redirect von www zu no www Nginx macht.

Wie man eine Weiterleitung ohne WWW in NGINX macht

Der einfachste Weg, eine Weiterleitung in Nginx für eine www-Domain zu erstellen, ist, einen separaten Serverabschnitt dafür zu erstellen und von dort aus weiterzuleiten. Zum Beispiel:

server {
server_name www.losst.ru;
return 301 $scheme://losst.ru$request_uri;
}

In dem Fall, in dem Sie die Behandlung von www und non-www im selben Serverabschnitt festlegen müssen, können Sie eine Bedingung und einen regulären Ausdruck verwenden. Wenn die Host-Variable die Buchstaben www am Anfang hat, sollten Sie einen 301-Antwortcode und einen Link zurückgeben, zu dem der Benutzer umgeleitet werden soll:

if ($host ~* ^www.(.*)$) {
return 301 $scheme://$server_name$request_uri;
}

Der Code sollte in den Serverbereich der Website eingefügt werden, für die Sie die Umleitung einrichten möchten. Wenn Sie ein LetsEncrypt SSL-Zertifikat verwenden, müssen Sie eine Validierung sowohl für die www-Domain als auch für die Nicht-Www-Domain erstellen. Die Bestätigungsanfrage sollte eine Antwort zurückgeben, keine Weiterleitung. Dazu können Sie eine $need_redirect-Variable erstellen und dann ihren Wert mit einigen Bedingungen ändern:

set $need_redirect "0";
if ($host ~* ^www.(.*)$) {
set $need_redirect "1";
}
if ($request_uri ~* "well-known") {
set $need_redirect "0";
}
if ( $need_redirect ~ "1") {
return 301 https://$server_name$request_uri;

Wenn die URL das Wort well-known enthält, das in der Domänenvalidierungsanfrage für ein SSL-Zertifikat verwendet wird, schlägt die Umleitung fehl. Speichern Sie die Einstellungen. Speichern Sie die Einstellungen und starten Sie Nginx neu:

nginx -s reload

Oder:

sudo systemctl restart nginx

Sie können dann mit curl testen, ob die Weiterleitung funktioniert:

curl -I www.losst.ru

Die Umleitung wird zurückgegeben, das Feld Location enthält eine URL, zu der der Benutzer umgeleitet wird. Wenn Sie jedoch versuchen, die URL von LetsEncrypt aus aufzurufen, erfolgt keine Weiterleitung:

curl -I https://www.losst.ru/.well-known/acme-challenge/xxxxxxxxxxxxxxxxxxxxxxx

Alles funktioniert wie erwartet. Dies ist das Ende der Anleitung.