V tomto článku se dozvíte:
- Co je a k čemu slouží soubor .htaccess
- Jak obnovit výchozí .htaccess
- Jak .htaccess nastavit
- Jaké příkazy jsou v .htaccessu blokované
- Často kladené dotazy
Co je a k čemu slouží 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, nastavení HTTPS, přesměrování webových adres a vypnutí proxy cache.
Přístup k souboru .htaccess
Pro přístup k výchozímu souboru .htaccess postupujte takto:
- Přihlaste se k hostingu přes FTP (například klient WebFTP).
- Vstupte do složky www.
- Mezi soubory najděte soubor s názvem .htaccess.
![WEDOS WebFTP - Soubor .htaccess ve složce www](https://kb.wedos.com/wp-content/uploads/2023/10/Webhosting-htacc-obr2-1024x470.png)
Některé FTP účty ve složce www začínají, jiné do ní (a tím pádem k výchozímu .htaccessu) mají přístup zablokovaný. Více informací najdete v článcích Webhosting – Základní správa souborů a Webhosting – Správa FTP účtů.
Pravidla ve výchozím .htaccessu se vztahují na celý webhosting. 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é souborem .htaccess, nebo jste tento soubor nedopatřením smazali, můžete jej obnovit přímo v zákaznické administraci.
- Přihlašte se do zákaznické administrace.
- V horní nabídce vyberte Hostingové služby.
- 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.
![](https://kb.wedos.com/wp-content/uploads/2021/09/htaccess-obr1-1024x524.png)
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 tomto článku 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
Pokročilá nastavení najdete v samostatných článcích:
- Nastavení vlastních chybových stránek
- Zaheslování přístupu k souboru, adresáři, nebo celému webu
- Modul mod_rewrite – přepisování URL adres
- Vytváření subdomén
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\.tld nahraď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.tld nahraď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]
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í.
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.
Použitím jakéhokoliv nepovoleného příkazu či parametru u příkazu Options způsobíte nefunkčost celého webu, která se projeví Chybou 500 – Internal Server Error.
Často kladené dotazy
Otázka: Přidal jsem do .htaccessu pravidlo, a ono nic nedělá. Kde je problém?
Odpověď: Nejčastějším problémem bývá umístění pravidel. Pravidla pro HTTPS a přesměrování umisťujte vždy na začátek dokumentu, bezprostředně pod řádek s textem RewriteEngine On.
Otázka: Upravil jsem .htaccess v domains/domena.tld a web přestal fungovat. Obnovil jsem výchozí .htaccess, ale web pořád hlásí stejnou chybu, proč?
Odpověď: Obnovením výchozího .htaccessu pomocí zákaznické administrace obnovujete pouze tento soubor v adresáři www. Na žádné jiné .htaccessy naše tlačítko nefunguje.
Otázka: Jak obnovit .htaccess redakčního systému?
Odpověď: 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.
Otázka: Po přesměrování pomocí souboru .htaccess pozoruji chybu „too many redirects,“ co se děje?
Odpověď: Web pravděpodobně přesměrovává sám na sebe. Zkontrolujte kód souboru .htaccess a správnost jeho umístění.