Maksājuma metodes Abuse

Kā Nginx pārlūkošanas sistēmā pāradresēt no WWW uz ne-WW

22.02.2022, 20:05


Lai optimizētu vietni atbilstoši SEO noteikumiem, tai jābūt vienam domēnam. Apakšdomēns ar www tiek uzskatīts par atsevišķu domēnu, ja tas nav pieejams, tas novedīs pie satura dublēšanās. Ko tas nozīmē. Dublikāti - nevēlami elementi, kas bieži kļūst par iemeslu vietnes pozīciju pazemināšanai meklētājprogrammās. Tāpēc ir vērts veikt pāradresēšanu no domēna www uz bez www. Tātad sākumā subdomēna www tika izmantota, lai norādītu serverim, ka viņš nevar izvietot tīmekļa serveri un izvietot vietni. Tagad tas vairs nav nepieciešams. Šajā rakstā apskatīsim, kā veikt novirzīšanu no www uz bez www Nginx.

Kā NGINX veikt pāradresēšanu bez WWW

Vienkāršākais veids, kā Nginx veikt novirzīšanu www domēnam, ir izveidot tam atsevišķu servera sadaļu un no tās veikt novirzīšanu. Piemēram:

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

Gadījumā, ja jums ir nepieciešams norādīt www un newww apstrādi vienā servera sadaļā, varat izmantot nosacījumu un regulāru izteiksmi. Ja mainīgajam mainīgajam host sākumā ir burti www, jums jāatgriež 301 atbildes kods un saite, uz kuru lietotājs jāpārvirza:

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

Kods jāpievieno vietnes, kurai vēlaties iestatīt novirzīšanu, servera sadaļai. Ja izmantojat LetsEncrypt SSL sertifikātu, jums būs jāģenerē apstiprinājums gan www domēnam, gan newww domēnam. Apstiprinājuma pieprasījumam jāatgriež atbilde, nevis pāradresācija. Lai to izdarītu, varat izveidot mainīgo $need_redirect un pēc tam mainīt tā vērtību ar dažiem nosacījumiem:

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;

Ja URL satur vārdu well-known, kas tiek izmantots SSL sertifikāta domēna apstiprināšanas pieprasījumā, pāradresācija neizdosies. Saglabājiet iestatījumus. Saglabājiet iestatījumus un restartējiet Nginx:

nginx -s reload

Vai:

sudo systemctl restart nginx

Pēc tam varat pārbaudīt, vai novirzīšana darbojas, izmantojot curl:

curl -I www.losst.ru

Pārvirzīšana atgriezīsies, atrašanās vietas laukā ir URL, uz kuru lietotājs tiks novirzīts. Bet, ja mēģināsiet piekļūt šim URL no LetsEncrypt, novirzīšana nenotiks:

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

Viss darbojas, kā paredzēts. Tas ir instrukcijas beigas.