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]

Poslední aktualizace: