Spôsoby platby Abuse

Ako presmerovať z WWW na non-WW v Nginxe

22.02.2022, 20:05


Ak chcete optimalizovať webovú lokalitu podľa pravidiel SEO, musí mať jednu doménu. Subdoména s www sa považuje za samostatnú doménu, v prípade, že je nedostupná, vedie k duplicitnému obsahu. Čo to znamená. Duplikáty - nežiaduce prvky, ktoré sa často stávajú príčinou poklesu pozície webu vo vyhľadávačoch. Preto sa oplatí urobiť presmerovanie z domény www na doménu bez www. Na začiatku sa teda subdoména www používala na označenie servera, že nemôže nasadiť webový server a hosťovať stránku. Teraz to už nie je potrebné. V tomto článku sa pozrieme na to, ako urobiť presmerovanie z www na bez www Nginx.

Ako urobiť presmerovanie bez WWW v NGINX

Najjednoduchší spôsob, ako urobiť presmerovanie v Nginxe pre doménu www, je vytvoriť pre ňu samostatnú sekciu servera a presmerovať z nej. Napríklad:

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

V prípade, že potrebujete určiť spracovanie www a ne www v tej istej serverovej sekcii, môžete použiť podmienku a regulárny výraz. Ak má premenná host na začiatku písmená www, mali by ste vrátiť kód odpovede 301 a odkaz, na ktorý má byť používateľ presmerovaný:

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

Kód by sa mal pridať do sekcie servera stránky, pre ktorú chcete nastaviť presmerovanie. Ak používate certifikát LetsEncrypt SSL, bude potrebné ho vygenerovať pre overenie domény www aj domény inej ako www. Žiadosť o potvrdenie by mala vrátiť odpoveď, nie presmerovanie. Na tento účel môžete vytvoriť premennú $need_redirect a potom zmeniť jej hodnotu pomocou niekoľkých podmienok:

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;

Ak adresa URL obsahuje slovo well-known, ktoré sa používa v požiadavke na overenie domény pre certifikát SSL, presmerovanie zlyhá. Uložte nastavenia. Uložte nastavenia a reštartujte Nginx:

nginx -s reload

Alebo:

sudo systemctl restart nginx

Potom môžete otestovať, či presmerovanie funguje pomocou curl:

curl -I www.losst.ru

Presmerovanie sa vráti, v poli Location (Umiestnenie) sa nachádza adresa URL, na ktorú má byť používateľ presmerovaný. Ak sa však pokúsite získať prístup k adrese URL z LetsEncrypt, presmerovanie sa neuskutoční:

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

Všetko funguje podľa očakávania. Toto je koniec návodu.