S čím vám můžeme pomoci?

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.

Obsah návodu
  1. Krok 1: Vytvořte soubor .htpasswd
  2. Krok 2: Zjistěte absolutní cestu k souboru
  3. Krok 3: Vytvořte .htaccess v chráněné složce
  4. Jak zaheslovat jen jeden soubor
  5. Nejčastější chyby

Čá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
Tip

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.php s obsahem <?php echo $_SERVER['DOCUMENT_ROOT']; ?>, nahrajte ho do složky web a otevřete v prohlížeči jako https://vasedomena.cz/info.php. Zobrazí se cesta ke složce web; k ní připojte /.htpasswd. Soubor info.php poté 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 .htpasswd z kroku 2.
  • Require valid-user – pustí dál kohokoli ze souboru. Pokud chcete povolit jen konkrétní uživatele, napište Require 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.

Hotovo

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 AuthUserFile je špatně nebo soubor .htpasswd na 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 .htaccess se 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.

Nenašli jste co hledáte?

Obraťte se na nás.
Odpovíme nejpozději do 24 hodin.

Napsat podpoře