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.
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.