soubory .htaccess
Menší popis vlastností souborů .htaccessPředem bych chtěl upozornit, že mám v úmyslu navázat na článek htaccess (1 díl) - co to je, základní použití, proto je vhodné si jej nejprve přečíst.
Jak již bylo řečeno, tyto soubory ovlivňují nastavení serveru, ukládají se do stromového dokumentu složky, na kterou chceme, aby se vztahovaly, to znamená,že umístíme-li soubor .htaccess do hlavní složky našeho webu, budou se zápisy vztahovat na celý web, pokud ale umístíme soubor do podsložky, bude vztahovat na danou složku, čili je tady jakási stromová struktura. Ovšem pokud máme soubor v hlavní složce, neznamená to, že by jsme ho v jakékoli podsložce nemohli změnit, stačí, když do této složky umístíme další soubor .htaccess s novým pravidlem. Toto se nám může hodit například, když chceme pouze na jedné složce webu povolit její prohlížení.
Soubory s pravidly ukládáme do složek pod jmény .htaccess, může dojít k tomu, že při vytváření v textovém editoru nám nepůjde uložit (řešení je v odkazovaném článku), to je způsobeno tím, že tento soubor vlastně nemá jméno!, obsahuje pouze příponu dlouhou osm znaků, což se editoru nemusí líbit. Je to hlavně z důvodu, že soubor beze jména se bude na serveru tvářit jako skrytý, proto jej nepůjde vidět, ovšem k samotnému zamezení přístupu k .htaccess se dostaneme dále v tomto článku.
Mezi základní použití patří jistě chybové hlášky, těmi se nebudu zabývat, jelikož již byly vysvětleny, ale další neméně důležitou funkcí je omezení nebo naopak povolení přístupu na server. Můžeme zakázat přistup jednotlivé IP adrese nebo celé skupině IP adres, toho dosáhneme zadáním pouze 1,2,3 skupin adres (standartní IPv4 adresy obsahují čtyři skupiny čísel). Docílíme toho následovně:
deny from xxx.xxx.xxx.xxx
Kde xxx.xxx.xxx.xxx znamená Ip adresu, pokud chceme zahradit přístup všem IP adresám, nahradíme xxx... za all. Pokud chceme naopak povolit přistup do složky, napíšeme do .htaccess následující pravidlo:
allow from xxx.xxx.xxx.xxx
Vše ostatní platí stejně, jako v případě blokování IP adresy, čili i povolení všem. Možná vám vrtá hlavou, proč psát povolení všem, když je to standartní, že by si tím webmaster jen komplikoval život? Rozhodně ne. Protože pomocí .htaccess můžeme dávat různým lidem různá práva, čili tyto providla je možno kombinovat, pokud to není jasné, ukážu to na následujícím příkladu
order allow,deny
deny from xxx.xxx.xxx.xxx
allow from all
Tento kód, jestli to tak můžu nazvat znamená, že zakážeme přístup z xxx..., ale všem ostatním jej povolíme, opačný postup můžeme použít například při přístupu na náš server z internetu, kdy nechceme, aby nám na localhost chodili a prohlíželi si lidé. Všechna omezení ale neplatí pro skripty, například PHP, což můžeme dobře využít.
Můžeme nastavit obdobným způsobem taky ochranu souboru .htaccess, a to tak, že do něj vložíme následující pravidlo:
<Files .htaccess>
order allow,deny
deny from all
</Files>
Pro vysvětlení, co to vlastně dělá, celé pravidlo se vztahuje k souboru .htaccess, je ohraničeno párovým atributem files, následující pravidla jsou již známá. K čemu to vlastně využít? Říkáte si, že v těchto souborevh není nic tajného? Omyl, pomocí .htaccess totiž můžeme zaheslovat soubor, je to nejlepší ochrana, jaká může být. Celkově se toto pravidlo skládá ze dvou souborů, a to .htaccess a .htpasswd, v prvním je pravidlo, ve druhém jsou uživatelské jména a hesla. .htaccess vypadá takto:
AuthUserFile /cesta k souboru .htpasswd
AuthGrouFile /dev/null
AuthName "jmeno"
AuthType Basic
require valid-user
Cesta k souboru .htpasswd je cesta k tomuto souboru, který doporučuji zadat do kořenové složky, protože tam bývá nejlépe chráněn, pokud tuto cestu neznáme, můžeme ji zjistit pomocí funkce phpinfo(), konkrétně řádek SCRIPT_FILENAME, kde samozdřejmě musíme upravit koncové udaje, jde zde pouze pro určení adresy na serveru! Jaku jméno uvedeme jméno této chráněné složky. Do souboru .htpasswd uvedeme jména a hesla v následovném seskupení:
uzivatelskejmeno:heslo
uzivatelskejmeno2:heslo2
...:...
Pomocí .htaccess můžeme ještě například změnit indexovaný soubor, tedy index.htm,php na ahoj.htm,php, ale i přidávat koncovky jako například.jpg a pod. Toho docílíme, že do souboru přidáme:
DirectoryIndex index.php index.html index.php ahoj.php ahoj.png cau.php
Přitom platí, že na server bude hledat soubory postupně z leva do prava, to znamená, že soubor na levé straně má větší váhu, než ten na pravé, server bude postupně hledat tak, že pokud nenalezne soubor se jménem, které je uvedeno na levé straně, bude postupovat dále napravo. Dále můžeme pomocí .htaccess přesměrovávat na jiné soubory nebo složky, to znaméná, zadáme-li do kolonky prohlížeče adresu x, bude jej server hledat na adrese y, praktický příklad:
Redirect /cesta souboru ci slozky http://www.domena.tld/nova cesta souboru ci slozky
Nesmíme zapomínat na to, že první adresa je adresa vzhledem ke kořenové složce, druhá už je vzhledek ke globální síti.Takto můžeme odkazovat také na složky a cokoli jiného. V odkazovaném článku je popsáno zakázání zobrazení složky, což je velmi výhodné, ale co když chceme v jedné složce zobrazení povolit?, například pro umožnění stahování skriptů, obrázků atd. Přidáme následující pravidlo do .htaccess v požadované podsložce
Options +Indexes
Všimněte si, že se zápis od zakázání liší jen ve znaménku, pouhou záměnou - za +. Když už jsme u toho zabrazení seznamu složky, možná by nebylo na škodu upozornit, že i seřazení seznamu lze ovlivnit pomocí .htaccess, třeba tak, že se bude řadit podle jména, od A po Z (dle abecedy). Zapíšeme to následovně:
IndexOrderDefault Ascending Name
IndexOrderDefault Descending Name
Druhý příklad se zpracuje jako opak, čili od Z po A, místo Name, což znamená jméno souboru, můžeme doplnit ještě Siz=velikost souboru, date=datum souboru a description=popis souboru. Toto by pro základní popis souborů .htaccess myslím stačilo, tyto soubory lze samozdřejmě spojit s PHP, ale o tom možná-asi napíše někdo jiný.
Autor: Tower