För att en webbplats ska kunna optimeras enligt SEO-reglerna måste den ha en domän. En underdomän med www betraktas som en separat domän, och om den är otillgänglig leder det till duplicerat innehåll. Vad det innebär. Duplikat - oönskade element, blir ofta orsaken till en minskning av webbplatsens position i sökmotorerna. Det är därför det är värt att göra en omdirigering från domänen www till utan www. Så i början användes underdomänen www för att beteckna servern att han inte kan distribuera en webbserver och värd för webbplatsen. Nu är detta inte längre nödvändigt. I den här artikeln kommer vi att titta på hur man gör en omdirigering från www till ingen www Nginx.
Det enklaste sättet att göra en omdirigering i Nginx för www-domänen är att skapa en separat serversektion för den och omdirigera därifrån. Ett exempel:
server {
server_name www.losst.ru;
return 301 $scheme://losst.ru$request_uri;
}
I det fall du behöver ange hanteringen av www och icke-www i samma serversektion kan du använda ett villkor och ett reguljärt uttryck. När host-variabeln har bokstäverna www i början ska du returnera en 301-svarskod och en länk som användaren ska omdirigeras till:
if ($host ~* ^www.(.*)$) {
return 301 $scheme://$server_name$request_uri;
}
Koden ska läggas till i serveravsnittet på den webbplats som du vill konfigurera omdirigeringen för. Om du använder ett LetsEncrypt SSL-certifikat måste du generera en validering för både www-domänen och icke-www-domänen. Bekräftelsebegäran ska returnera ett svar, inte en omdirigering. För att göra detta kan du skapa en $need_redirect-variabel
och sedan ändra dess värde med några villkor:
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;
Om URL:en innehåller ordet well-known, som används i begäran om domänvalidering för ett SSL-certifikat, kommer omdirigeringen att misslyckas. Spara inställningarna. Spara inställningarna och starta om Nginx:
nginx -s reload
Eller:
sudo systemctl restart nginx
Du kan sedan testa om omdirigeringen fungerar med hjälp av curl
:
curl -I www.losst.ru
Omdirigeringen kommer att returneras, fältet Location har en URL att omdirigera användaren till. Men om du försöker komma åt webbadressen från LetsEncrypt kommer det inte att ske någon omdirigering:
curl -I https://www.losst.ru/.well-known/acme-challenge/xxxxxxxxxxxxxxxxxxxxxxx
Allt fungerar som förväntat. Detta är slutet på instruktionen.