Webhosting – Nastavení souboru .htaccess

  htaccess, Webhosting

V tomto článku se dozvíte:

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.

Pro přístup k výchozímu souboru .htaccess postupujte takto:

  1. Přihlaste se k hostingu přes FTP (například klient WebFTP).
  2. Vstupte do složky www.
  3. Mezi soubory najděte soubor s názvem .htaccess.

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.

  1. Přihlašte se do zákaznické administrace.
  2. V horní nabídce vyberte Hostingové služby.
  3. Vyberte webhosting, u kterého chcete soubor .htaccess obnovit.
  4. V levém menu klikněte na Nástroje.
  5. V tabulce Obnovení výchozího .htaccessu klikněte na tlačítko obnovit .htaccess.
Tlačítko pro obnovení výchozího souboru .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 přejmenuje podle pravidel uvedených v tabulce.

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:

Pokročilá nastavení najdete v samostatných článcích:

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řekopírujte 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:

  1. 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).
  2. 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.
RewriteCond %{HTTP_HOST} ^(www\.)?staraadresa\.tld$
RewriteRule (.*) http://novaadresa.tld [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
  • 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.

Byl pro Vás tento návod užitečný?