Betalingsmåter Abuse

Hvordan omdirigere fra WWW til ikke-WW i Nginx

22.02.2022, 20:05


For å optimalisere et nettsted i henhold til SEO-reglene må det ha ett domene. Et underdomene med www regnes som et separat domene, og hvis det er utilgjengelig, vil det føre til duplisert innhold. Hva det betyr. Duplikater - uønskede elementer, blir ofte årsaken til en reduksjon i nettstedets posisjon i søkemotorene. Det er derfor det er verdt å gjøre en omdirigering fra domenet www til uten www. Så i begynnelsen ble underdomenet www brukt til å betegne serveren at han ikke kan distribuere en webserver og vert for nettstedet. Nå er dette ikke lenger nødvendig. I denne artikkelen vil vi se på hvordan du gjør en redirect fra www til ingen www Nginx.

Hvordan lage omdirigering uten WWW i NGINX

Den enkleste måten å gjøre en omdirigering i Nginx for www-domene er å opprette en egen serverseksjon for det og omdirigere derfra. For eksempel:

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

I tilfeller der du trenger å angi håndteringen av www og ikke-www i samme serverseksjon, kan du bruke en betingelse og et regulært uttrykk. Når vertsvariabelen har bokstavene www i begynnelsen, bør du returnere en 301-svarskode og en lenke som brukeren skal omdirigeres til:

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

Koden skal legges til i serverseksjonen på nettstedet du ønsker å konfigurere viderekoblingen for. Hvis du bruker et LetsEncrypt SSL-sertifikat, må du generere en validering for både www-domenet og ikke-www-domenet. Bekreftelsesforespørselen skal returnere et svar, ikke en omdirigering. For å gjøre dette kan du opprette en $need_redirect-variabel og deretter endre verdien med noen 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-adressen inneholder ordet well-known, som brukes i domenevalideringsforespørselen for et SSL-sertifikat, vil omdirigeringen mislykkes. Lagre innstillingene. Lagre innstillingene og start Nginx på nytt:

nginx -s reload

Eller:

sudo systemctl restart nginx

Du kan deretter teste om viderekoblingen fungerer ved hjelp av curl:

curl -I www.losst.ru

Omdirigeringen kommer tilbake, og Location-feltet har en URL som brukeren skal omdirigeres til. Men hvis du prøver å få tilgang til URL-en fra LetsEncrypt, vil det ikke være noen omdirigering:

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

Alt fungerer som forventet. Dette er slutten på instruksjonen.