Co je redirect .htaccess a jak ho nastavit
Pomocí redirect .htaccess můžete přesměrovat návštěvníky z jedné URL svého webu na jinou přímo na úrovni serveru (za předpokladu, že běží na Apache).
Tento způsob je efektivní, protože přesměrování probíhá bez nutnosti úprav v kódu webu nebo aplikaci, což šetří výkon.
V .htaccess lze nastavit různé typy přesměrování – například přesměrování z HTTP na bezpečné HTTPS, mezi subdoménami nebo na zcela nové URL.
Jak aktivovat redirect .htaccess
Pro aktivaci redirect .htaccess je třeba použít příkaz RewriteEngine on, který povolí použití přepisovacích pravidel (rewrite rules), nutných pro pokročilé přesměrování.
Tento příkaz se píše jen jednou na začátku souboru .htaccess, za ním lze přidávat jednotlivá pravidla.
Typy přesměrování v .htaccess
V .htaccess lze nastavit různé typy přesměrování, které slouží pro různé účely:
- 301 Permanent Redirect pro trvalé přesměrování
- 302 Temporary Redirect pro dočasné přesměrování (např. při úpravách stránky)
- RewriteRule pomocí mod_rewrite pro pokročilejší přesměrování (mezi subdoménami, z HTTP na HTTPS nebo přepis permalinků)
Příklady konkrétních příkazů pro přesměrování
Po zapnutí RewriteEngine on můžete přidávat konkrétní přesměrování podle toho, čeho potřebujete dosáhnout:
301 Permanent Redirect
Redirect 301 /stara-stranka https://example.com/nova-stranka
302 Temporary Redirect
Redirect 302 /stara-stranka https://example.com/nova-stranka
Přesměrování HTTP na HTTPS
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTPS} !=On [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Přesměrování HTTPS na HTTP
RewriteCond %{HTTP:X-Forwarded-Proto} https
RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Přesměrování subdomény do podadresáře
Používá se k přesměrování požadavků na subdoménu do specifického podadresáře na hlavní doméně (např. shop.domena.cz → www.domena.cz/shop)
RewriteCond %{HTTP_HOST} ^shop.domena.cz$ [NC]
RewriteRule ^(.*)$ https://www.domena.cz/shop/$1 [L,R=301]
Přepis permalinků na SEO-friendly formát
Tento příklad přepíše URL example.com/produkty/123 na produkty.php?id=123.
RewriteRule ^produkty/([0-9]+)$ produkty.php?id=$1 [L,QSA]