Si të ridrejtoni www në Non-www me Apache në CentOS 7


Prezantimi

Shumë zhvillues të uebit duhet t'i lejojnë përdoruesit e tyre të hyjnë në uebsajtin ose aplikacionin e tyre si përmes nëndomainit www ashtu edhe domenit rrënjë (jo-www). Kjo do të thotë, përdoruesit duhet të kenë të njëjtën përvojë kur vizitojnë www.my-website.com dhe my-website.com. Ndërsa ka shumë mënyra për ta vendosur këtë, zgjidhja më miqësore me SEO është të zgjidhni se cilin domen preferoni—nëndomainin ose domenin rrënjë—dhe t'i ridrejtoni serverin e uebit përdoruesit që vizitojnë tjetrin në domenin e preferuar.

Ka shumë lloje ridrejtimesh HTTP, por në këtë skenar, është më mirë të përdorni një ridrejtim 301, i cili u thotë klientëve: \Uebfaqja që keni kërkuar është zhvendosur përgjithmonë në një URL tjetër. Shkoni atje në vend të kësaj. Sapo shfletuesi të marrë kodin e përgjigjes HTTP 301 nga serveri, ai dërgon një kërkesë të dytë në URL-në e re të dhënë nga serveri dhe përdoruesit i paraqitet uebsajti, ndoshta duke mos vënë re kurrë se ata ishin ridrejtuar.

Pse të mos konfiguroni serverin tuaj të uebit që të shërbejë thjesht të njëjtën faqe interneti për kërkesat për të dy emrat e domeneve? Kjo mund të duket më e lehtë, por nuk jep avantazhet e SEO të ridrejtimit 301. Një ridrejtim i përhershëm u tregon zvarritësve të motorëve të kërkimit se ka një vendndodhje kanonike për faqen tuaj të internetit dhe kjo përmirëson renditjen e kërkimit të asaj URL.

Në këtë tutorial, ju do të konfiguroni një ridrejtim 301 duke përdorur Apache në CentOS 7. Nëse jeni duke ekzekutuar Nginx në vend të Apache, shikoni këtë tutorial në vend të kësaj: Si të ridrejtoni www në Non-www me Nginx në CentOS 7

Parakushtet

Për të përfunduar këtë tutorial, së pari ju duhet:

  • Privilegjet e superpërdoruesit në serverin që po ekzekuton Apache. Nëse nuk e keni tashmë atë të konfiguruar, ndiqni udhëzuesin tonë të konfigurimit fillestar të serverit me CentOS 7.
  • Apache është instaluar dhe konfiguruar për të shërbyer uebsajtin tuaj. Ndiqni këtë tutorial për ta bërë këtë: Si të instaloni serverin në internet Apache në CentOS 7.
  • Një emër domaini i regjistruar. Nëse nuk e keni ende, mund të merrni një falas nga ky artikull nga dokumentacioni ynë që tregon se si ta bëni këtë.

Le të fillojmë duke konfiguruar të dhënat tuaja DNS.

Hapi 1 - Konfigurimi i regjistrimeve DNS

Së pari, duhet t'i drejtoni si www.my-website.com dhe my-website.com te serveri juaj që funksionon Apache. (Pjesa tjetër e tutorialit supozon se domeni juaj është my-website.com. Zëvendësojeni atë me domenin tuaj kudo që ta shihni më poshtë.) Këtë do ta bëni duke krijuar një rekord DNS A për çdo emër që tregon adresën IP të serverit tuaj Apache.

Hapni tastierën në internet të ofruesit tuaj DNS. Ky tutorial përdor DigitalOcean DNS.

Në formën Shto një domen, fut emrin e domenit të regjistruar në fushën e tekstit dhe kliko Shto domen. Kjo do të shfaqë faqen e domenit të ri, ku mund të shikoni, shtoni dhe fshini regjistrimet për domenin.

Nën Krijo regjistrim të ri, shkruani \@ në fushën e tekstit HOSTNAME. Ky është një karakter i veçantë që tregon se po shtoni një rekord për emrin e domenit rrënjë, një rekord thjesht për my-website.com. Në fushën e tekstit DO DREJTOJ NË, futni adresën publike IPv4 të serverit tuaj dhe klikoni Krijo regjistrim >. (Nuk ka nevojë të ndryshohet TTL.)

Për regjistrimin tuaj të dytë DNS, mund të përdorni një rekord CNAME në vend të një regjistrimi A. Një rekord CNAME është një pseudonim që tregon një emër tjetër në vend të një adrese IP. Mund të krijoni një CNAME që drejton www.my-website.com te my-website.com dhe çdo kërkesë HTTP për nëndomainin www do të gjente rrugën e saj te serveri juaj pasi sapo keni krijuar rekordin A për domenin rrënjë. Por për t'i mbajtur gjërat të thjeshta, thjesht krijoni një tjetër regjistrim si ai i pari, duke futur \www në fushën HOSTNAME dhe adresën IP publike të serverit në DO DREJTIM TË fushë.

Kur të keni krijuar të dy regjistrimet, duhet të duket diçka si kjo:

Me dy regjistrimet në vend, kërkesat në ueb për my-website.com dhe www.my-website.com duhet të arrijnë në serverin tuaj Apache. Tani le të konfigurojmë serverin.

Hapi 2 - Konfigurimi i Ridrejtimit në Apache

Serveri i uebit Apache ofron dy module për t'ju ndihmuar të konfiguroni ridrejtimet: mod_alias dhe mod_rewrite. Megjithëse mod_rewrite është më i fuqishëm, mod_alias është më i drejtpërdrejtë për t'u kuptuar dhe përdorur. Nëse keni nevojë të ridrejtoni kërkesat që përmbajnë vargje të veçanta të pyetjeve, për shembull, ose tituj HTTP, do t'ju duhet të përdorni mod_rewrite. Shumë zgjedhin mod_rewrite për aftësitë e tij të përputhjes së shprehjeve të rregullta, të cilat i mungojnë mod_alias. Por për rastin e thjeshtë të ridrejtimit të të gjitha kërkesave për www.my-website.commy-website.com, mod_alias do të funksionojë. (Vetë Apache rekomandon zgjedhjen e mod_alias kur është e mundur, duke thënë se zgjedhja e mod_rewrite kur është e panevojshme \çon në konfigurime që janë konfuze, të brishta dhe të vështira për t'u mirëmbajtur.)

Moduli duhet të aktivizohet si parazgjedhje në CentOS 7, por për të kontrolluar dyfish, ekzekutoni këtë komandë:

  1. httpd -M | grep alias_module

Nëse alias_module (i përbashkët) shfaqet në dalje, moduli është tashmë i aktivizuar. Nëse jo, aktivizojeni duke e shtuar këtë rresht te /etc/httpd/conf.modules.d/00-base.conf:

  1. echo “LoadModule alias_module modules/mod_alias.so” | sudo tee -a /etc/httpd/conf.modules.d/00-base.conf

Me mod_alias të aktivizuar, ju mund të përdorni direktivat Ridirect, RedirectMatch dhe të tjera të listuara në dokumentet mod_alias në dokumentet tuaja Konfigurimi i Apache.

Tani le të konfigurojmë VirtualHost-të tuaj.

Siç thuhet në Parakushtet, duhet ta keni tashmë faqen tuaj të internetit të konfiguruar në Apache. Mund të konfigurohet në skedarin kryesor të konfigurimit të Apache (/etc/httpd/conf/httpd.conf) ose ndoshta në skedarin e tij (p.sh., /etc/httpd/conf.d/ my-website.com.conf). Nëse keni përdorur Udhëzuesin e Instalimit Apache të lidhur në Parakushtet për të konfiguruar VirtualHost-të tuaja, ai mund të jetë në një skedar si /etc/httpd/sites-available/my-website. com.conf. Kudo ku është konfiguruar faqja juaj kryesore, hapeni atë skedar në vi ose në redaktorin tuaj të preferuar (yum install nano, nëse preferoni):

  1. sudo vi /etc/httpd/conf/httpd.conf

Kërkoni për çdo direktivë ServerAlias të vendosur në VirtualHost. Nëse gjeni një linjë me ServerAlias të vendosur në www.my-website.com, hiqeni atë rresht. (Ose, nëse ajo rresht përmban shumë pseudonime në një listë të ndarë me presje, hiqni vetëm www.my-website.com nga lista.) Duhet ta hiqni këtë pseudonim sepse do të krijoni një VirtualHost të veçantë për nëndomainin që nuk përmban asgjë përveç Emri i serverit dhe Ridrejtimi. VirtualHost kryesor për sajtin nuk do të shërbejë më kërkesa për www.my-website.com.

Tani krijoni një VirtualHost në një skedar të veçantë (p.sh. /etc/httpd/conf.d/www.my-website.com.conf) :

  1. sudo vi /etc/httpd/conf.d/www.my-website.com.conf

Ngjitni përmbajtjen e mëposhtme në skedar, duke zëvendësuar my-website.com me emrin tuaj të domenit:

<VirtualHost *:80>
    ServerName www.my-website.com
    Redirect permanent / http://my-website.com/
</VirtualHost>

Ruani dhe dilni kur të keni mbaruar. Nëse e keni krijuar këtë skedar në /etc/httpd/sites-available, sipas udhëzuesit tonë të instalimit të Apache, krijoni një lidhje simbolike për skedarin në /etc/httpd/sites-enabled/:

  1. sudo ln -s /etc/httpd/sites-available/www.my-website.com.conf /etc/httpd/sites-enabled/

Ky VirtualHost i ri konfiguron Apache-n për të dërguar një ridrejtim 301 te çdo klient që kërkon www.my-website.com dhe i drejton ata të vizitojnë my-website.com në vend të kësaj. Ridrejtimi ruan URI-në e kërkesës, kështu që një kërkesë për http://www.my-website.com/login.php do të ridrejtohet në http://my-website.com /login.php.

Shënim: nëse VirtualHost kryesore e faqes suaj përmban një ServerAlias me një nëndomain të shkrepjes—*.my-website.com —duhet të konsideroni heqjen e tij dhe krijimin e një VirtualHost të ri si ai që sapo keni krijuar për çdo nëndomain që dëshironi të ridrejtoni. Nëse nuk dëshironi t'i ridrejtoni të gjitha nëndomainët dhe keni nevojë që disa prej tyre të vazhdojnë të shërbehen nga VirtualHost kryesor, është më mirë të emërtoni në mënyrë eksplicite çdo nëndomain si një pseudonim, veçanërisht tani që keni një nëndomein. kërkesat e të cilit nuk dëshironi të përputhen pa dashje me VirtualHost kryesor. (Ju mund ta emërtoni çdo nëndomain në rreshtin e tij ServerAlias, ose t'i emërtoni të gjitha si një listë të ndarë me presje në një linjë ServerAlias.)

Nëse duhet të mbani ServerAlias për *.my-website.com, duhet të siguroheni që Apache të ngarkojë www VirtualHost të ri përpara fillimit kryesor një, sepse nëse ai kryesor është i ngarkuar i pari, Apache do ta përdorë atë për të trajtuar kërkesat për www.my-website.com meqenëse ai emër përputhet me pseudonimin e shkronjave të egra. Ekzekutoni komandën e mëposhtme për të parë se cili VirtualHost do të ngarkohet i pari pasi të rinisni Apache:

  1. httpd -S

Kërkoni rreshtat që përmbajnë namevhost my-website.com dhe namevhost www.my-website.com. Nëse linja www shfaqet së pari, ju jeni gati. Nëse VirtualHost për domenin rrënjë shfaqet së pari, megjithatë, ka disa mënyra për ta bërë Apache të ngarkojë fillimisht www:

  1. Nëse VirtualHost juaj kryesor gjendet në një skedar (p.sh. /etc/httpd/conf/httpd.conf) që përdor Include ose direktiva IncludeOptional për të përfshirë direktorinë që përmban www VirtualHost tuaj të re, thjesht lëvizni atë rresht Include mbi kodin kryesor VirtualHost > brenda skedarit.
  2. Nëse skedarët tuaj kryesorë VirtualHost dhe skedarët tuaj të ri www VirtualHost përmbahen në të njëjtën direktori (p.sh., /etc/httpd/conf.d/), mund ta detyroni Apache-n të ngarkojë fillimisht www-në duke riemërtuar skedarët dhe duke i vendosur disa numra emrave të skedarëve. Vendosni 01- në emrin e skedarit të www VirtualHost (p.sh., /etc/httpd/conf.d/01-www.my-website.com. conf) dhe 02- në emrin e skedarit kryesor të VirtualHost (p.sh., /etc/httpd/conf.d/02-my- website.com.conf).

Ekzekutoni përsëri httpd -S për t'u siguruar që www VirtualHost të shfaqet fillimisht.

Kur të jeni gati, rinisni Apache:

  1. sudo systemctl restart httpd

Përpara se të vizitoni www.my-website.com në shfletuesin tuaj, bëni një kërkesë duke përdorur curl ose në serverin tuaj ose në makinën tuaj lokale (nëse curl është instaluar në vend):

  1. curl -IL http://www.my-website.com

Flamuri -I i thotë curl të shfaqë vetëm titujt nga përgjigja e serverit. Flamuri -L i thotë curl t'i bindet çdo ridrejtimi nga serveri duke bërë automatikisht një kërkesë të dytë, këtë herë në URL-në e dhënë në Vendndodhja header (ashtu siç do të bënte një shfletues ueb). Meqenëse keni konfiguruar ridrejtimin 301, curl duhet të bëjë dy kërkesa dhe ju duhet të shihni vetëm titujt e dy përgjigjeve:

Output
HTTP/1.1 301 Moved Permanently Date: Tue, 03 Jan 2023 19:24:44 GMT Server: Apache/2.4.53 Location: http://my-website.com/ Content-Type: text/html; charset=iso-8859-1 HTTP/1.1 200 OK Date: Tue, 03 Jan 2023 19:24:44 GMT Server: Apache/2.4.53 Last-Modified: Thu, 01 Dec 2022 22:10:57 GMT ETag: "39-5eecb7ed6bfc9" Accept-Ranges: bytes Content-Length: 57 Content-Type: text/html; charset=UTF-8

Në përgjigjen 301 (Moved Permanently) ndaj kërkesës origjinale për http://www.my-website.com, vini re titullin e dytë deri në të fundit: Vendndodhja: http://my- website.com. Përgjigja e dytë është nga kërkesa vijuese e curl në URL-në e dhënë në atë titull Vendndodhja dhe nëse faqja juaj e internetit është e shëndetshme, serveri duhet të ishte përgjigjur me 200 (OK) .

Më në fund, vizitoni http://www.my-website.com në shfletuesin tuaj të internetit. Blini sytë dhe do të humbisni ridrejtimin. Faqja juaj e internetit duhet të shfaqet si zakonisht, por shikoni përsëri në shiritin tuaj të adresave dhe vini re se \www mungon në URL-në. Shumica e përdoruesve nuk do ta vënë re kurrë këtë, dhe kështu ata do të kenë të njëjtën përvojë sikur të kishin kërkuar http://my-website.com.

konkluzioni

Në këtë tutorial, ju keni shtuar dy regjistrime DNS për faqen tuaj të internetit dhe keni konfiguruar Apache për të ridrejtuar një domen dytësor në domenin tuaj të preferuar. Tani faqja juaj e internetit është e arritshme përmes të dy domeneve. Ndoshta ishte para se të lexoni këtë tutorial; ndoshta ju po e shërbenit direkt nga të dy emrat e domenit. Por me vetëm katër linja të tjera të konfigurimit Apache, ju keni përmirësuar pozicionin e faqes suaj të internetit në sytë e motorëve të kërkimit - dhe në këtë mënyrë e keni ekspozuar atë ndaj më shumë përdoruesve në internet.

Jeni kurioz për modulin më të fuqishëm mod_rewrite? Shikoni tutorialin tonë Si të rishkruani URL-të me mod_rewrite për Apache në Ubuntu 22.04.