Jak zaheslovat složku na webu pomocí .htpasswd
Ochrana složky nebo jednoho souboru na webu jménem a heslem pomocí souborů .htaccess a .htpasswd.
4 minuty čtení
Obsah návodu
Část webu, kterou nemá vidět veřejnost – rozpracované stránky, administraci, soubory ke stažení pro klienty – můžete jednoduše zamknout jménem a heslem. Server se před zobrazením zeptá na přihlašovací údaje a bez nich obsah nevydá. Stačí k tomu dva soubory: .htpasswd se seznamem uživatelů a .htaccess s pravidlem, co chránit.
Krok 1: Vytvořte soubor .htpasswd
Soubor obsahuje na každém řádku jednoho uživatele a jeho zašifrované heslo ve tvaru jmeno:zasifrovane_heslo. Heslo se do souboru nikdy nezapisuje v čitelné podobě.
Varianta A – online generátor. Vyhledejte „htpasswd generator“, zadejte jméno a heslo a zvolte šifrování bcrypt nebo MD5 (APR1). Výsledný řádek zkopírujte do textového souboru, který uložíte jako .htpasswd.
Varianta B – příkaz htpasswd (macOS, Linux, nebo Windows s nainstalovaným Apache):
htpasswd -c -B .htpasswd jan
Příkaz se zeptá na heslo a soubor vytvoří. Dalšího uživatele přidáte stejným příkazem bez přepínače -c (ten soubor vytváří znovu a stávající uživatele by smazal).
Výsledný soubor vypadá například takto:
jan:$2y$05$k8XlQ2Ld9ZzP7l1yWv0tXeH3rq4mB6nS1cJd0eF9gH2iK3lM4nO5p
Soubor .htpasswd nahrajte přes FTP mimo chráněnou složku, ideálně přímo do kořene složky web. Server soubory začínající tečkou z bezpečnostních důvodů návštěvníkům nevydává.
Krok 2: Zjistěte absolutní cestu k souboru
Do .htaccess se musí zadat absolutní cesta na disku serveru, nikoli webová adresa. Vypadá například jako /home/uzivatel/vasedomena.cz/web/.htpasswd a u každého hostingu je jiná. Zjistíte ji dvěma způsoby:
- Přes phpinfo: vytvořte soubor
info.phps obsahem<?php echo $_SERVER['DOCUMENT_ROOT']; ?>, nahrajte ho do složkyweba otevřete v prohlížeči jakohttps://vasedomena.cz/info.php. Zobrazí se cesta ke složceweb; k ní připojte/.htpasswd. Souborinfo.phppoté smažte. - Od podpory: napište na podporu (podpora@datahost.cz) a cestu vám sdělíme.
Krok 3: Vytvořte .htaccess v chráněné složce
Ve složce, kterou chcete zamknout (např. web/tajne), vytvořte soubor .htaccess s obsahem:
AuthType Basic
AuthName "Chraneny obsah"
AuthUserFile /home/uzivatel/vasedomena.cz/web/.htpasswd
Require valid-user
AuthType Basic– zapne základní ověření jménem a heslem.AuthName– text, který se zobrazí v přihlašovacím okně (bez diakritiky).AuthUserFile– absolutní cesta k souboru.htpasswdz kroku 2.Require valid-user– pustí dál kohokoli ze souboru. Pokud chcete povolit jen konkrétní uživatele, napišteRequire user jan petr.
Postup vytvoření souboru najdete v návodu Jak vytvořit soubor .htaccess. Ochrana platí pro složku i všechny její podsložky.
Otevřete chráněnou složku v prohlížeči. Zobrazí se přihlašovací okno; po zadání jména a hesla ze souboru .htpasswd se obsah načte. Testujte v anonymním okně, protože prohlížeč si údaje pamatuje.
Jak zaheslovat jen jeden soubor
Pokud chcete chránit jen konkrétní soubor (např. cenik.pdf) a zbytek složky nechat volně přístupný, uzavřete pravidla do bloku <Files> v .htaccess ve stejné složce:
<Files "cenik.pdf">
AuthType Basic
AuthName "Chraneny soubor"
AuthUserFile /home/uzivatel/vasedomena.cz/web/.htpasswd
Require valid-user
</Files>
Více souborů zahrnete pomocí <FilesMatch "\.(pdf|xlsx)$">, který chrání všechny soubory s danými příponami.
Nejčastější chyby
- Chyba 500 Internal Server Error – cesta v
AuthUserFileje špatně nebo soubor.htpasswdna daném místě není. Zkontrolujte cestu i název souboru (včetně tečky na začátku). - Přihlašovací okno se zobrazí, ale heslo nefunguje – heslo bylo do souboru zapsáno v čitelné podobě, nebo je použit nepodporovaný typ šifrování. Vygenerujte řádek znovu s bcrypt nebo MD5 (APR1).
- Okno se nezobrazí a obsah je volně dostupný – soubor
.htaccessse nenahrál, nebo ho FTP program skrývá. Viz Co dělat, když chybí soubor .htaccess. - Ověření Basic posílá heslo nešifrovaně, pokud web neběží na HTTPS. Zapněte HTTPS podle návodu Jak vynutit HTTPS pomocí .htaccess.