Způsoby platby Abuse

Jak přesměrovat z WWW na non-WW v Nginxu

22.02.2022, 20:05


Aby bylo možné optimalizovat webové stránky podle pravidel SEO, musí mít jednu doménu. Subdoména s www je považována za samostatnou doménu, v případě, že je nedostupná, vede k duplicitnímu obsahu. Co to znamená. Duplicity - nežádoucí prvky, které se často stávají příčinou poklesu pozice webu ve vyhledávačích. Proto se vyplatí provést přesměrování z domény www na doménu bez www. Na začátku se tedy subdoména www používala k označení serveru, že nemůže nasadit webový server a hostovat web. Nyní to již není nutné. V tomto článku se podíváme na to, jak provést přesměrování z www na bez www Nginx.

Jak provést přesměrování bez WWW v NGINX

Nejjednodušší způsob, jak v Nginxu provést přesměrování pro doménu www, je vytvořit pro ni samostatnou sekci serveru a přesměrovat z ní. Například:

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

V případě, že potřebujete určit zpracování www a newww ve stejné serverové sekci, můžete použít podmínku a regulární výraz. Pokud má proměnná host na začátku písmena www, měli byste vrátit kód odpovědi 301 a odkaz, na který má být uživatel přesměrován:

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

Kód by měl být přidán do sekce serveru webu, pro který chcete přesměrování nastavit. Pokud používáte certifikát LetsEncrypt SSL, bude třeba jej vygenerovat pro ověření domény www i newww. Požadavek na potvrzení by měl vrátit odpověď, nikoli přesměrování. Za tímto účelem můžete vytvořit proměnnou $need_redirect a poté změnit její hodnotu pomocí několika podmínek:

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;

Pokud adresa URL obsahuje slovo well-known, které se používá v požadavku na ověření domény pro certifikát SSL, přesměrování se nezdaří. Nastavení uložte. Uložte nastavení a restartujte systém Nginx:

nginx -s reload

Nebo:

sudo systemctl restart nginx

Poté můžete otestovat, zda přesměrování funguje pomocí curl:

curl -I www.losst.ru

Přesměrování se vrátí, v poli Location je uvedena adresa URL, na kterou má být uživatel přesměrován. Pokud se však pokusíte přistoupit na adresu URL z LetsEncrypt, k žádnému přesměrování nedojde:

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

Vše funguje podle očekávání. Tímto návod končí.