Betalingsmetoder Abuse

Sådan omdirigerer du fra WWW til ikke-WW i Nginx

22.02.2022, 20:05


For at kunne optimere et website i henhold til SEO-reglerne skal det have ét domæne. Et underdomæne med www betragtes som et separat domæne, og hvis det er utilgængeligt, vil det føre til duplikeret indhold. Hvad det betyder. Duplikater - uønskede elementer, der ofte bliver årsagen til et fald i webstedets position i søgemaskinerne. Derfor er det værd at lave en omdirigering fra domænet www til uden www. Så i begyndelsen blev subdomænet www brugt til at signalere til serveren, at han ikke kan implementere en webserver og være vært for webstedet. Nu er det ikke længere nødvendigt. I denne artikel vil vi se på, hvordan man laver en omdirigering fra www til no www i Nginx.

Sådan laver du en omdirigering uden WWW i NGINX

Den enkleste måde at lave en omdirigering i Nginx for www-domænet er at oprette en separat serversektion til det og omdirigere derfra. For eksempel:

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

I det tilfælde, hvor du har brug for at angive håndteringen af www og ikke-www i samme serversektion, kan du bruge en betingelse og et regulært udtryk. Når host-variablen har bogstaverne www i begyndelsen, skal du returnere en 301-svarskode og et link, som brugeren skal omdirigeres til:

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

Koden skal føjes til serversektionen på det websted, som du vil oprette omdirigeringen for. Hvis du bruger et LetsEncrypt SSL-certifikat, skal du generere en validering for både www-domænet og ikke-www-domænet. Bekræftelsesanmodningen skal returnere et svar, ikke en omdirigering. For at gøre dette kan du oprette en $need_redirect-variabel og derefter ændre dens værdi med nogle få betingelser:

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;

Hvis URL'en indeholder ordet well-known, som bruges i anmodningen om domænevalidering for et SSL-certifikat, vil omdirigeringen mislykkes. Gem indstillingerne. Gem indstillingerne, og genstart Nginx:

nginx -s reload

Eller:

sudo systemctl restart nginx

Du kan derefter teste, om omdirigeringen fungerer ved hjælp af curl:

curl -I www.losst.ru

Omdirigeringen kommer tilbage, og feltet Location indeholder en URL, som brugeren skal omdirigeres til. Men hvis du prøver at få adgang til URL'en fra LetsEncrypt, vil der ikke være nogen omdirigering:

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

Alt fungerer som forventet. Dette er slutningen på instruktionen.