Mokėjimo būdai Abuse

Kaip "Nginx" sistemoje nukreipti iš WWW į ne WWW

22.02.2022, 20:05


Norint optimizuoti svetainę pagal SEO taisykles, ji turi turėti vieną domeną. Subdomenas su www yra laikomas atskiru domenu, jei jis bus nepasiekiamas, tai lems turinio dubliavimąsi. Ką tai reiškia. Dublikatai - nepageidaujami elementai, dažnai tampantys svetainės pozicijos paieškos sistemose prastėjimo priežastimi. Todėl verta atlikti nukreipimą iš domeno www į be www. Taigi iš pradžių subdomenas www buvo naudojamas serveriui reikšti, kad jis negali diegti žiniatinklio serverio ir talpinti svetainės. Dabar to nebereikia. Šiame straipsnyje panagrinėsime, kaip padaryti nukreipimą iš www į be www Nginx.

Kaip NGINX sistemoje padaryti nukreipimą be WWW

Paprasčiausias būdas padaryti www domeno nukreipimą "Nginx" - sukurti jam atskirą serverio skyrių ir nukreipti iš jo. Pavyzdžiui:

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

Jei jums reikia nurodyti, kaip tvarkyti www ir ne www tame pačiame serverio skyriuje, galite naudoti sąlygą ir reguliariąją išraišką. Kai hosto kintamojo pradžioje yra raidės www, turėtumėte grąžinti 301 atsakymo kodą ir nuorodą, į kurią naudotojas turėtų būti nukreiptas:

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

Šį kodą reikėtų pridėti prie svetainės, kuriai norite nustatyti nukreipimą, serverio skirsnio. Jei naudojate "LetsEncrypt" SSL sertifikatą, turėsite sugeneruoti tiek www domeno, tiek ne www domeno patvirtinimą. Patvirtinimo užklausa turėtų grąžinti atsakymą, o ne nukreipimą. Norėdami tai padaryti, galite sukurti kintamąjį $need_redirect ir tada pakeisti jo reikšmę keliomis sąlygomis:

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;

Kai URL yra žodis well-known, kuris naudojamas SSL sertifikato domeno patvirtinimo užklausoje, nukreipimas nepavyks. Išsaugokite nustatymus. Išsaugokite nustatymus ir iš naujo paleiskite "Nginx":

nginx -s reload

Arba:

sudo systemctl restart nginx

Tada galite patikrinti, ar nukreipimas veikia, naudodami curl:

curl -I www.losst.ru

Peradresavimas bus grąžintas, laukelyje Location yra URL, į kurį reikia nukreipti naudotoją. Tačiau jei bandysite pasiekti URL iš "LetsEncrypt", nukreipimo nebus:

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

Viskas veikia taip, kaip tikėtasi. Tai yra instrukcijos pabaiga.