Fizetési módok Abuse

Hogyan lehet átirányítani a WWW-ről a nem-WW-re az Nginx-ben?

22.02.2022, 20:05


Ahhoz, hogy egy webhelyet a SEO-szabályok szerint optimalizálni lehessen, egy domainnel kell rendelkeznie. A www aldomain különálló domainnek minősül, abban az esetben, ha nem elérhető, duplikált tartalomhoz vezet. Mit jelent ez? Duplikátumok - nem kívánt elemek, gyakran válnak a webhely keresőmotorokban elfoglalt pozíciójának csökkenésének okozóivá. Ezért érdemes átirányítást végezni a www domainről www nélkülre. Tehát az elején a www aldomaint arra használták, hogy jelezze a szervernek, hogy nem tud webkiszolgálót telepíteni, és befogadta a webhelyet. Most már erre nincs szükség. Ebben a cikkben megnézzük, hogyan lehet átirányítást végezni www-ről www nélkülire Nginx.

Hogyan készítsünk átirányítást WWW nélkül az NGINX-ben?

A legegyszerűbb módja annak, hogy átirányítást készítsünk az Nginxben www domainhez, hogy létrehozunk egy külön szerver szekciót számára, és onnan irányítunk át. Például:

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

Abban az esetben, ha a www és a nem-www kezelését ugyanabban a szerverszekcióban kell kijelölni, használhatunk egy feltételt és egy reguláris kifejezést. Ha a host változó elején a www betűk szerepelnek, akkor 301-es válaszkódot és egy linket kell visszaadnia, amelyre a felhasználót át kell irányítani:

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

A kódot annak a webhelynek a kiszolgálószekciójához kell hozzáadni, amelyre az átirányítást be kívánja állítani. Ha LetsEncrypt SSL-tanúsítványt használ, akkor a www és a nem-www domain érvényesítéséhez is létre kell hozni. A megerősítő kérésnek választ kell visszaadnia, nem pedig átirányítást. Ehhez létrehozhat egy $need_redirect változót, majd néhány feltétellel megváltoztathatja az értékét:

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;

Ha az URL tartalmazza a well-known szót, amelyet az SSL-tanúsítvány domain-érvényesítési kérésében használnak, az átirányítás sikertelen lesz. Mentse a beállításokat. Mentse a beállításokat, és indítsa újra az Nginxet:

nginx -s reload

Vagy:

sudo systemctl restart nginx

Ezután tesztelheti, hogy az átirányítás működik-e a curl használatával:

curl -I www.losst.ru

Az átirányítás visszatér, a Location mezőben van egy URL, ahová a felhasználót át kell irányítani. De ha megpróbálja elérni az URL-t a LetsEncryptből, nem lesz átirányítás:

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

Minden a várt módon működik. Itt az utasítás vége.