Ak potrebujete presmerovať svoju webovú stránku na inú adresu, spôsobov je niekoľko. Najčastejšie sa používajú spôsoby pomocou rewrite pravidiel v súbore .htaccess (na serveroch Apache).
Keď si presmerujete svoju doménu resp. webovú stránku pomocou návodu uverejnenom nižšie a pri otestovaní presmerovanie nefunguje, skúste reštartovať prehliadač (príp. vyčistite cache) a potom znovu otestujte presmerovanie. "Nefungujúce" presmerovanie je často dôsledkom toho, že si prehliadač drží v pamäti pôvodné dáta, ktoré v tomto prípade treba vyčistiť.
Presmerovanie na inú lokalitu
Presmerovanie na inú lokalitu v tomto kontexte znamená, že máte stránku na nejakej doméne, dáta stránky si skopírujete na inú doménu a chcete si pôvodnú stránku presmerovať na novú lokalitu.
Najprv si vytvorte súbor .htaccess (aj s tou bodkou na začiatku) a otvorte ho v programe Notepad++. Môžete použiť aj klasický Notepad vo Windows, ale Notepad++ odporúčame, je ideálny pre úpravy súborov takéhoto typu. Takže pokojne si ho stiahnite aj nainštalujte, je možné ho používať aj v slovenčine (alebo češtine, záleží aký jazyk si pri inštalácii vyberiete).
Úpravám v .htaccess súboroch sa venujte len vtedy, ak presne viete, čo robíte. Neodborné zásahy môžu spôsobiť zacyklenie stránky alebo pád webu. Vždy si zálohujte pôvodný .htaccess súbor predtým, než ho upravíte a ak sa niečo pokazí, upravený vymažte a nahraďte ho pôvodným súborom. Zároveň majte na pamäti, že nasledujúci návod je všeobecný, rôzne redakčné systémy a vývojové platformy (CMS a frameworky) môžu vyžadovať odlišné úpravy .htaccess súborov. V týchto prípadoch odporúčame si preštudovať manuály k daným softvérom.
Možností presmerovania pomocou súboru .htaccess je niekoľko, postupne si ich tu predstavíme.
Doménu exohosting.sk budeme používať ako cieľovú, teda tú, kam presmerovanie nasmerujeme. Namiesto exohosting.sk si doplňte svoju vlastnú doménu. Ako pôvodnú lokalitu v našich príkladoch budeme používať doménu exoweb.sk.
Pri presmerovaní budete mať možnosť si nastaviť typ presmerovania:
- 301 - ide o trvalé presmerovanie (používame aj v našich príkladoch), kedy vyhľadávačom posielate informáciu, že presmerovanie je navždy a môžu sa preniesť ranky na novú lokalitu. Obyčajne do dvoch týždňoch vyhľadávače upravia výsledky vyhľadávania tak, že namiesto pôvodnej lokality budú vo výsledkoch ponúkať novú lokalitu.
- 302 - ide o dočasné presmerovanie, ktoré odporúčame používať len ak je to nevyhnutné. Napr. chystáte novú webovú stránku a návštevníkov chcete presmerovať len dovtedy, pokým nová stránka nebude hotová.
Jednoduché presmerovanie celej lokality
Otvorte si súbor v Notepad++ (ďalej editor) a vložte do neho tento kód:
RewriteEngine On RedirectMatch 301 / https://www.exohosting.sk
Súbor uložte a nahrajte do /public_html/ adresára. Ide o najjednoduchšiu formu presmerovania ktorá znamená, že ak navštívite svoju stránku a je jedno, či to bude hlavná doména alebo nejaká kategória (v rámci danej domény) alebo dokonca subdoména (v rámci našej infraštruktúry to takto pracuje), všetky odkazy budú presmerované na www.exohosting.sk.
Tento spôsob je vhodný vtedy, ak proste chcete len spraviť presmerovanie starej lokality a jej odkazov na novú lokalitu a nezáleží vám na štruktúre odkazov. Presmerovanie si samozrejme môžete zadať aj bez www, v závislosti od toho, akú verziu cieľovej lokality používate.
Presmerovanie hlavnej domény okrem subdomén
RewriteEngine On RewriteCond %{HTTP_HOST} ^exoweb\.sk$ [OR] RewriteCond %{HTTP_HOST} ^www\.exoweb\.sk$ RewriteRule ^(.*)$ https://www.exohosting.sk/ [L,R=301]
Samozrejme do zoznamu si môžete pridať aj vybrané subdomény. Napr. máte subdoménu test a chcete aj tú presmerovať na novú lokalitu. Skopírujte si riadok s www na riadok nižšie, www si prepíšte na test a za pôvodný riadok s www dajte [OR]. Vo výsledku to bude vyzerať takto a hlavná doména (vrátane www) sa spolu so subdoménou test presmerujú na novú lokalitu:
RewriteEngine On RewriteCond %{HTTP_HOST} ^exoweb\.sk$ [OR] RewriteCond %{HTTP_HOST} ^www\.exoweb\.sk$ [OR] RewriteCond %{HTTP_HOST} ^test\.exoweb\.sk$ RewriteRule ^(.*)$ https://www.exohosting.sk/ [L,R=301]
Presmerovanie pri zachovaní štruktúry odkazov
Tento príklad nebude robiť len jednoduché presmerovania celej lokality, ale presmeruje aj štruktúru stránky. Napríklad máte na stránke exoweb.sk nainštalovaný WordPress, ktorý obsahuje hromadu článkov a chceli by ste WordPress preniesť napríklad na exohosting.sk, pričom chcete zachovať štruktúru odkazov na články a zároveň ich presmerovať z pôvodnej lokality.
Napr. máte odkaz:
https://exoweb.sk/2023/01/01/ahoj-svet/
a potrebujete, aby tento odkaz bol presmerovaný na novú lokalitu uvedenú nižšie:
https://exohosting.sk/2023/01/01/ahoj-svet/
Do súboru .htaccess (nachádzajúci sa v public_html domény exoweb.sk) vložte nasledujúci kód:
RewriteEngine On RedirectMatch 301 /(.*)/(.*)/(.*)/(.*)$ https://www.exohosting.sk/$1/$2/$3/$4/
Kód zverejnený vyššie presmeruje články, ale ignoruje presmerovanie hlavnej stránky (domény), ktorú treba špeciálne zadať, tak si ju do súboru .htaccess doplníme. Nasledujúci kód presmeruje hlavnú doménu a všetky články na novú lokalitu exohosting.sk:
RewriteEngine On RewriteCond %{QUERY_STRING} ^$ RewriteRule ^$ https://exohosting.sk/? [R=301,L] RedirectMatch 301 /(.*)/(.*)/(.*)/(.*)$ https://www.exohosting.sk/$1/$2/$3/$4/
Podobne môžete vyriešiť aj presmerovanie kategórií, napr.:
RewriteEngine On RewriteCond %{QUERY_STRING} ^$ RewriteRule ^$ https://exohosting.sk/? [R=301,L] RedirectMatch 301 /(.*)/(.*)/(.*)/(.*)$ https://www.exohosting.sk/$1/$2/$3/$4/ RedirectMatch 301 /category/(.*)$ https://www.exohosting.sk/category/$1/
Pri vytváraní presmerovaní takéhoto druhu si musíte podľa štruktúry odkazov upraviť samotný kód presmerovania. Tak napríklad, keď články vo WordPress majú štruktúru v tvare /2023/01/01/ahoj-svet/ teda /rok/mesiac/deň/názov/ v samotnom kóde si musíte vytvoriť štyri * záznamy ako v príklade vyššie a taktiež štyri $ záznamy.
Pri vytváraní odkazov pre súbor .htaccess si môžete pomôcť online generátormi, napr. https://www.301-redirect.online/htaccess-rewrite-generator, ktoré vám pomôžu si vytvoriť také presmerovania, aké potrebujete, prípadne si môžete pomôcť manuálom k mod_rewrite. Odporúčame, aby ste si vždy .htaccess súbor otestovali, ideálne v inkognito režime prehliadača.
Presmerovania v rámci vlastnej lokality
Nasledujúce možnosti presmerovania domény pomocou súboru .htaccess používajte vtedy, ak z nejakého dôvodu nechcete alebo nemôžete mať aktivované Automatické presmerovanie na HTTPS v Nastaveniach Apache a PHP v Control Paneli.
Presmerovanie domény z HTTP na HTTPS
Kód uvedený nižšie presmeruje všetky stránky z HTTP na HTTPS verziu. Nerozlišuje, či používate verziu s www alebo bez www, ak použijete v HTTP odkaze www, stránka bude presmerovaná na zabezpečenú verziu (HTTPS) s www. Ak nepoužijete www v odkaze HTTP, stránka bude na HTTPS presmerovaná tiež bez www.
RewriteEngine On RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Presmerovanie domény z HTTPS na HTTP
V prípade, ak z nejakého dôvodu potrebujete presmerovať stránky zo zabezpečeného pripojenia HTTPS na nezabezpečené HTTP, použite kód uvedený nižšie, ktorý presmeruje všetky stránky na doméne, bez ohľadu na to, či používate odkazy s www alebo bez www:
RewriteEngine On RewriteCond %{ENV:HTTPS} on RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Vyššie uvedené príklady sú jednoduché, ale z pohľadu SEO nemusia byť ideálne, keďže všeobecne sa odporúča buď používať odkazy s www alebo bez www.
Presmerovanie domény z HTTP na HTTPS bez www
Ak by ste chceli presmerovať stránky z HTTP na HTTPS bez www, použite kód uvedený nižšie.
Daný kód zabezpečí, že všetky verzie odkazov (s HTTP, s HTTPS, s www) budú presmerované na zabezpečenú verziu HTTPS bez www.
RewriteEngine On RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] RewriteRule ^(.*)$ https://%1/$1 [L,R=301]
Presmerovanie domény z HTTP na HTTPS s www
Ak chcete spraviť presmerovanie naopak, že z verzie bez www chcete presmerovať na verziu s www, použite kód uvedený nižšie. Daný kód zabezpečí, že všetky verzie odkazov (s HTTP, s HTTPS, bez www) budú presmerované na zabezpečenú verziu (HTTPS) s www.
RewriteEngine On RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] RewriteCond %{HTTP_HOST} !^www\. RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Ďalšími možnosťami presmerovania sú v rámci domén / zložiek (myslené ako kategórie resp. podstránky v rámci domény) a subdomén.
Presmerovanie zložky na subdoménu
Napríklad máte zložku (podstránku, kategóriu) /web/ a chceli by ste z nej spraviť subdoménu web.exohosting.sk.
Do .htaccess v /public_html/ vložte tento kód a zložka /web/ bude presmerovaná na subdoménu /web/:
RewriteEngine On RedirectMatch 301 /web/ https://web.exohosting.sk/
Presmerovanie subdomény na zložku
Opačne, teda zo subdomény web.exohosting.sk si môžete presmerovanie do zložky /web/ spraviť takto:
RewriteCond %{HTTP_HOST} ^web.exohosting.sk$ RewriteRule ^(.*)$ https://exohosting.sk/web/ [L,R=301]
Presmerovanie subdomény na doménu
Ak má ísť o presmerovanie subdomény web.exohosting.sk priamo na doménu exohosting.sk, môžete použiť tento kód:
RewriteCond %{HTTP_HOST} ^web.exohosting.sk$ RewriteRule ^(.*)$ https://exohosting.sk/ [R=301,L]
Všetky testy s .htaccess súbormi odporúčame robiť v inkognito režime prehliadača, aby ste znížili problémy a nacachovaným obsahom webových stránok.
See also this article
See also this article