Potřebujete pomoc s webem? Najděte svého specialistu na VEDOS Profi ⧉.
V tomto článku se dozvíte:
- Kdy tento návod použijete
- Co je a k čemu slouží soubor .htaccess
- Jak obnovit výchozí .htaccess
- Jak .htaccess nastavit
- Jaké příkazy jsou v .htaccessu blokované
- Běžné problémy
- Často kladené dotazy
Kdy tento návod použijete
Tento návod použijte například v těchto situacích:
- Subdoména nebo další doména zobrazuje obsah hlavního webu, nebo odkazy vedou na adresy s /domains/. Viz Subdoména zobrazuje jiný web.
- Po úpravě .htaccessu se zobrazuje Internal Server Error nebo Too Many Redirects. Viz Nové nastavení nefunguje.
- Bezpečnostní plugin WordPressu hlásí chybu open_basedir restriction in effect u souboru .htaccess. Viz Plugin hlásí open_basedir.
- Potřebujete vrátit výchozí .htaccess, protože jste ho smazali nebo rozbili, nebo zakládáte nový web na místě starého. Postup najdete v kapitole Obnovení výchozího .htaccessu.
- Chcete vynutit HTTPS, přesměrovat starou adresu nebo omezit přístup podle IP adresy. Viz Nastavení .htaccessu.
- Web, třeba editor stránek, načítá skripty nestabilně. Můžete zkusit vypnout proxy cache.
Soubor .htaccess
Soubor .htaccess (na začátku musí být tečka) obsahuje nastavení Apache serveru, která řídí provoz webhostingu. Mezi nejčastější využití patří směrování v adresářové struktuře webhostingu, vynucení HTTPS, přesměrování webových adres a vypnutí proxy cache.
Přístup k souboru .htaccess
Pro přístup k souboru .htaccess postupujte takto:
- Přihlaste se k hostingu přes FTP, například klient WebFTP ⧉ (Manuál).
- Vstupte do složky www.
- Mezi soubory najděte soubor s názvem .htaccess.

Pravidla ve výchozím .htaccessu se vztahují na všechny weby. Pravidla v souborech .htaccess v jiných adresářích (často například www/domains/domena.tld) se vztahují pouze k obsahu daného adresáře a všech jeho podadresářů.
Souborů .htaccess můžete mít více než jeden – záleží na počtu adresářů, ve kterých chcete nastavit specifická pravidla.
Obnovení výchozího .htaccessu
Pokud se Vám nedaří najít příčinu chyby způsobené upraveným výchozím souborem .htaccess, nebo jste tento soubor nedopatřením smazali, můžete jej obnovit přímo v zákaznické administraci.
- Přihlaste se do zákaznické administrace ⧉.
- V horní nabídce vyberte Hostingové služby Webhosting nebo WMS.
- Vyberte webhosting, u kterého chcete soubor .htaccess obnovit.
- V levém menu klikněte na Nástroje.
- V tabulce Obnovení výchozího .htaccessu klikněte na tlačítko obnovit .htaccess.

Zároveň s obnovením výchozího souboru .htaccess tímto tlačítkem vytvoříte zálohu stávajícího souboru, který systém zkopíruje do stejné složky.
Tlačítko obnovuje pouze soubor .htaccess ve složce www. Jiné soubory .htaccess, například ty vytvořené redakčními systémy, musíte obnovit jinak.
Výchozí soubor .htaccess neobsahuje pravidla pro HTTPS. Pokud HTTPS používáte, přidejte pravidla do obnoveného souboru ručně.
Nastavení .htaccessu
Podmínky a příkazy v souboru .htaccess používají regulární výrazy. Pokud je neovládáte, můžete soubor přesto upravovat, ale věnujte zvýšenou pozornost návodu. Nefunkční .htaccess způsobuje Chybu 500 – Internal Server Error.
Než začnete soubor .htaccess upravovat, vytvořte si jeho zálohu.
V této kapitole najdete návody na:
- Směrování v adresářové struktuře webhostingu
- Nastavení HTTPS
- Přesměrování webových adres
- Vypnutí proxy cache
Směrování v adresářové struktuře Webhostingu
Hlavním účelem našeho výchozího souboru .htaccess je nasměrovat požadavky do správných složek Webhostingu, zejména domains a subdom. Pozorujete-li chyby v navigaci do adresářů, opravte soubor .htaccess tak, aby obsahoval následující text, případně jej zcela obnovte.
RewriteEngine On
# cele domeny (aliasy)
RewriteCond %{REQUEST_URI} !^domains/
RewriteCond %{REQUEST_URI} !^/domains/
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)$
RewriteCond %{DOCUMENT_ROOT}/domains/%2 -d
RewriteRule (.*) domains/%2/$1 [DPI]
# subdomeny (s nebo bez www na zacatku)
RewriteCond %{REQUEST_URI} !^subdom/
RewriteCond %{REQUEST_URI} !^/subdom/
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)\.([^\.]*)\.([^\.]*)$
RewriteCond %{DOCUMENT_ROOT}/subdom/%2 -d
RewriteRule (.*) subdom/%2/$1 [DPI]
# aliasy - spravne presmerovani pri chybejicim /
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^domains/[^/]+/(.+[^/])$ /$1/ [R]
# subdomeny - spravne presmerovani pri chybejicim /
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^subdom/[^/]+/(.+[^/])$ /$1/ [R]
Nastavení HTTPS
Při aktivaci HTTPS mimo jiné nastavujete .htaccess pravidlo, které variantu s HTTPS vybírá jako výchozí. Nastavte jej přímo do .htaccess souboru ve složce www, bezprostředně pod řádek RewriteEngine On.
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R=301,L]
Header set Content-Security-Policy "upgrade-insecure-requests;"
Přidání tohoto kódu může způsobit zablokování našeho instalátoru aplikací. Narazíte-li při instalaci na problém s .htaccess souborem, dočasně jej obnovte a po úspěšné instalaci opět přepište automaticky vytvořenou zálohou.
Výchozí soubor .htaccess pravidla pro HTTPS neobsahuje. Pokud jste jej obnovili a chcete pravidla pro HTTPS používat, přidejte je znovu.
Přesměrování URL
Následujícím pravidlem, známým jako Přesměrování 301, říkáte prohlížeči i vyhledávačům, že stránka se definitivně přesunula ze staré adresy na novou. Zejména vyhledávače pak nebudou vnímat přesunutý obsah jako duplicitní.
Zkopírujte text níže a vložte do souboru .htaccess pod řádek RewriteEngine On. Dále jej upravte podle těchto pravidel:
- V textu
staraadresa\.tldnahraďte text staraadresa adresou, ze které přesměrování probíhá, a tld nahraďte správnou koncovkou. Ujistěte se, že před znakem . (tečkou) je znak \ (zpětné lomítko). - V textu
http://novaadresa.tldnahraďte novaadresa.tld adresou, na kterou web přesměrováváte. Používá-li nová adresa https, přepište i text http. - Chcete-li přesměrovávat na výchozí stránku nové adresy, smažte na druhém řádku znaky
$1.
RewriteCond %{HTTP_HOST} ^(www\.)?staraadresa\.tld$
RewriteRule (.*) http://novaadresa.tld/$1 [R=301,L]
Omezení přístupu pro vybrané IP adresy
V souboru .htaccess můžete omezit přístup k určitým (nebo všem) souborům pouze z určitých IP adres. Zde je příklad pro blokování přístupu k souboru wp-login.php (přihlašovací stránka WordPress administrace):
<Files wp-login.php>
Order Deny,Allow
Deny from all
Allow from X.X.X.X
</Files>
Kód můžete upravit podle těchto pravidel:
- V
<Files ___>můžete uvést buď konkrétní soubor, nebo znak*pro všechny soubory v dané složce a podsložkách. - Adresu
X.X.X.Xnahraďte Vaší IPv4 nebo IPv6 adresou. - Direktiv
Allow from X.X.X.Xmůžete zadat více, každou na vlastní řádek.
Přístupy k danému souboru z jiných IP adres budou končit Chybou 403.
Jediný způsob, jak získat přístup k souboru z blokované adresy, je přidání této adresy do seznamu povolených, nebo vyřazení kódu. Ani jeden z těchto zásahů neprovádí zákaznická podpora.
Vypnutí proxy cache
Potřebujete-li u webu nebo jeho části (adresáře, subdomény) vypnout proxy cache, vložte do souboru .htaccess tento kód:
# DISABLE CACHING
<IfModule mod_headers.c>
Header set Cache-Control "no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires 0
</IfModule>
Omezení .htaccessu na webhostingu
Abychom zabránili nežádoucímu chování serveru, nastavili jsme souboru .htaccess určitá omezení.
Použitím jakéhokoliv nepovoleného příkazu či parametru u příkazu Options způsobíte nefunkčnost celého webu, která se projeví Chybou 500 – Internal Server Error.
V konfiguraci webserveru smíte používat následující kategorie příkazů pro htaccess:
- AuthConfig
- FileInfo
- Limit
- Indexes
- Options*
Vyhněte se používání příkazů:
- php_flag
- php_value
- ServerSignature
- SetEnv
- SetHandler
- XBitHack
- AddHandler
- Options*
* U příkazu Options smíte používat pouze volbu Indexes, ostatní jsou zakázány.
Běžné problémy
Mezi běžné problémy se souborem .htaccess patří:
- Nové nastavení se neprojevuje nebo rozbíjí web
- Obnova výchozího .htaccessu nefunguje
- Soubor .htaccess něco přepisuje
- Subdoména zobrazuje jiný web
- Plugin hlásí open_basedir
Nové nastavení nefunguje
Problém: Po změně nastavení .htaccessu se nové chování neprojevuje, nebo web přestal fungovat úplně. Nejčastěji sem patří chyby Internal Server Error a Too Many Redirects.
Příčina: Může jít o chybu pojmenování nebo umístění souboru .htaccess, umístění kódu v tomto souboru nebo jeho správnost.
Řešení: Proveďte důkladnou kontrolu a opravte chyby:
- Zkontrolujte, že se soubor nachází ve správné složce (nemusí to být jenom www) a jmenuje se přesně .htaccess, včetně tečky na začátku.
- Ujistěte se, že kód je umístěný na správném místě souboru (například na začátku po příkazu
RewriteEngine On), a že všechny části, které obsahovaly zástupný text (např.domena.tld) jsou nahrazené správným textem. - Pokud soubor obsahuje blokované příkazy, vyřaďte dané řádky umístěním znaku
#na začátek řádku.
Obnova výchozího .htaccessu nefunguje
Problém: Po obnovení výchozího .htaccessu se web chová pořád stejně.
Příčina: Buď obnovujete nesprávný .htaccess, nebo je nesprávné zobrazení webu cachované.
Řešení: Obnovte stránku bez cache prohlížeče klávesovou zkratkou Ctrl+Shift+R.
Potřebujete-li obnovit výchozí stav souboru .htaccess jinde než ve složce www (nebo .htaccessu redakčního systému, například WordPressu), získejte jej ze zálohy nebo webových stránek redakčního systému.
Neznámý program přepisuje .htaccess
Problém: Po změně nastavení .htaccessu jej něco záhy přepíše nežádoucím kódem.
Příčina: Na webhostingu je umístěný software (většinou plugin, může být i malware), který do .htaccessu generuje vlastní kód.
Řešení: Vyhledejte původce změn v souboru .htaccess:
- Bezpečnostní pluginy většinou pomocí .htaccessu blokují přístup na citlivá místa systému, například do administrace redakčního systému. Při pokusu o přístup pak často pozorujete Chybu 403: Forbidden. Řešením je přenastavení nebo vypnutí daného bezpečnostního pluginu.
- Aktualizace redakčního systému mohou do svého .htaccessu zavést problematický kód, který způsobuje nejčastěji Chybu 500 – Internal Server Error. Řešením je vypnutí automatických aktualizací a rychlý zásah do kódu .htaccessu bezprostředně po manuální aktualizaci.
- Malware běžně narušuje zobrazení stránky, nebo ji přesměrovává na nežádoucí URL. Řešením je důkladné odvirování webu, které VEDOS bohužel nezprostředkovává, ani k němu neposkytuje podporu.
Subdoména zobrazuje jiný web
Problém: Subdoména nebo další doména zobrazuje hlavní web, hlavní stránku nebo odkazy vedou na adresy s /domains/, i když máte web nahraný ve správné složce.
Příčina: Soubor .htaccess ve složce www nesměruje požadavky do složek domains a subdom, nebo ho jiný .htaccess v adresáři webu přebíjí. Častá je také špatná adresa webu v nastavení redakčního systému (v databázi je adresa hlavní domény místo subdomény).
Řešení: Ve složce www obnovte výchozí .htaccess, případně vložte kód ze směrování v adresářové struktuře. Zkontrolujte adresářovou strukturu podle článků Webhosting – Subdomény a Webhosting – Obnova adresářové struktury (reset) FTP. U redakčního systému ověřte, že má v nastavení adresu subdomény. Nakonec obnovte stránku bez cache prohlížeče klávesovou zkratkou Ctrl+Shift+R.
Plugin hlásí open_basedir
Problém: Bezpečnostní plugin WordPressu (např. Wordfence nebo Really Simple Security) hlásí open_basedir restriction in effect. File(/.htaccess) is not within the allowed path.
Příčina: Příkaz open_basedir je na webhostingu z bezpečnostních důvodů zablokovaný, plugin proto soubor .htaccess upravit nemůže.
Řešení: Vraťte .htaccess WordPressu do výchozí podoby podle dokumentace WordPressu. Nefunguje-li přístup přes WebFTP, připojte se desktopovým FTP klientem, například FileZillou. Další postup je popsaný v kapitole Neznámý program přepisuje .htaccess.
Často kladené dotazy
Jak obnovím výchozí .htaccess redakčního systému?
Než začnete soubor .htaccess upravovat, vytvořte jeho zálohu. Pokud ji nemáte, buď redakční systém přeinstalujte, nebo vyhledejte výchozí obsah .htaccess stejné verze CMS jinde. Pokud vše ostatní selže, kontaktujte zákaznickou podporu.
Kde najdu pokročilé .htaccess příkazy?
Pro pokročilé .htaccess příkazy neposkytujeme podporu. Některé najdete v komunitních článcích v kategorii .htaccess ⧉. U návodů vyhledaných online mějte na paměti omezení .htaccessu na Webhostingu.
Nemám přístup přes WebFTP. Opraví .htaccess podpora?
Nejdřív zkuste připojení desktopovým FTP klientem, například FileZillou. Trváte-li na opravě z naší strany, zpřístupněte podpoře dočasný FTP přístup a pošlete žádost přes kontaktní formulář ⧉.
Web nestabilně načítá skripty. Pomůže vypnutí proxy cache?
Může, ale není to jisté. Vložte do .htaccessu kód z kapitoly Vypnutí proxy cache. Nepomůže-li to, vraťte nastavení do původního stavu.