Jotta verkkosivusto voidaan optimoida SEO-sääntöjen mukaisesti, sillä on oltava yksi verkkotunnus. Aliverkkotunnusta, jossa on www, pidetään erillisenä verkkotunnuksena, ja jos se ei ole käytettävissä, se johtaa kaksoissisältöön. Mitä se tarkoittaa. Kaksoiskappaleet - ei-toivottuja elementtejä, joista usein tulee syy sivuston aseman heikkenemiseen hakukoneissa. Siksi kannattaa tehdä uudelleenohjaus verkkotunnuksesta www ilman www. Joten alussa aliverkkotunnusta www käytettiin osoittamaan palvelimelle, että hän ei voi ottaa käyttöön verkkopalvelinta ja isännöi sivustoa. Nyt tämä ei ole enää tarpeen. Tässä artikkelissa tarkastelemme, miten tehdä uudelleenohjaus www:stä ilman www:tä Nginxissä.
Yksinkertaisin tapa tehdä uudelleenohjaus Nginxissä www-verkkotunnukselle on luoda sille erillinen palvelinosa ja ohjata sieltä uudelleen. Esim:
server {
server_name www.losst.ru;
return 301 $scheme://losst.ru$request_uri;
}
Siinä tapauksessa, että sinun on määriteltävä www:n ja ei-www:n käsittely samassa palvelinosiossa, voit käyttää ehtoa ja säännöllistä lauseketta. Kun host-muuttujan alussa on kirjaimet www, sinun pitäisi palauttaa vastauskoodi 301 ja linkki, johon käyttäjä ohjataan:
if ($host ~* ^www.(.*)$) {
return 301 $scheme://$server_name$request_uri;
}
Koodi on lisättävä sen sivuston palvelinosioon, jolle haluat määrittää uudelleenohjauksen. Jos käytät LetsEncrypt SSL -sertifikaattia, sinun on luotava validointi sekä www-verkkotunnukselle että muulle kuin www-verkkotunnukselle. Vahvistuspyynnön pitäisi palauttaa vastaus, ei uudelleenohjausta. Voit tehdä tämän luomalla muuttujan $need_redirect
ja muuttamalla sen arvoa muutamalla ehdolla:
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;
Kun URL-osoite sisältää sanan well-known, jota käytetään SSL-sertifikaatin verkkotunnuksen vahvistuspyynnössä, uudelleenohjaus epäonnistuu. Tallenna asetukset. Tallenna asetukset ja käynnistä Nginx uudelleen:
nginx -s reload
Tai:
sudo systemctl restart nginx
Voit sitten testata, toimiiko uudelleenohjaus curl-ohjelmalla
:
curl -I www.losst.ru
Uudelleenohjaus palaa, Location-kentässä on URL-osoite, johon käyttäjä ohjataan. Mutta jos yrität käyttää URL-osoitetta LetsEncryptistä, uudelleenohjausta ei tapahdu:
curl -I https://www.losst.ru/.well-known/acme-challenge/xxxxxxxxxxxxxxxxxxxxxxx
Kaikki toimii odotetusti. Tämä on ohjeen loppu.