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é
- Běžné problémy
- Č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.
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řihlašte 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 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
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.
Běžné problémy
Mezi běžné problémy se souborem .htaccess patří:
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.
Často kladené dotazy
Otázka: Jak obnovím .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.