htaccess (2 díl) - přístupy, hesla, alternativní index

Napsal O webu (») 24. 6. 2005 v kategorii Banan.cz, přečteno: 9172×

soubory .htaccess

Menší popis vlastností souborů .htaccess

Př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
Štítky: htaccess
Facebook Twitter Topčlánky.cz Linkuj.cz

Komentáře

Zobrazit: standardní | od aktivních | poslední příspěvky | všechno
Mefi z IP 62.77.70.*** | 30.4.2009 18:04
Dobry den, chci se optat jestli je mozne pomoci .htaccess povolit pristup pouze 1 IP kterou si vyberu, nebo dokonce vice IP adresam a ostatnim pristup zamitnout? a nebo jestli existuje nejaky jiny postup jak toho dosahnout.. Dekuji moc za odpoved
banan-martin-m z IP 82.209.8.*** | 30.4.2009 18:28
Dobrý den,
odpověď je k nalezení mezi články
http://www.owebu.cz/banan/vypis.php?clanek=654
Mefi z IP 62.77.70.*** | 30.4.2009 18:52
Omlouvam se, ale cetl jsem si to a je tam jen povolit pro vsechny IP adresy nebo zakazat pro vsechny IP adresy.. nebo povolit OD.. a ja nepotyrebuji povolit OD ale jen povolit pro.. napadlo me jestli je mozne dat povolit od do v rozhrani te dane IP adresy, treba pokud je IP 68.25.113.13 (smyslena) tak dat povolit od 68.25.113.13 a zakazat od 68.25.113.13.. nebo dat v IP vetsi cisla.. myslim tim udelat nejake uzke rozhrani okole te dane IP.. myslite ze by to slo?
banan-martin-m z IP 82.209.8.*** | 30.4.2009 18:58
zkuste
deny from all
allow from konkrétníIP
Mefi z IP 62.77.70.*** | 30.4.2009 19:43
fungujee tooosmajl smajl smajl dekujuu moooooc.. este bych prosil jestli nevite zda jde udelat pristup pro vice adres? jestli treba je oddelit carkou?
banan-martin-m z IP 82.209.8.*** | 30.4.2009 19:47
další adresu bych dal na další řádek
Mefi z IP 62.77.70.*** | 30.4.2009 19:51
supeer.. Deukuju vam mooc... je to to co sem hledal.. Hrozne moc ste mi pomohl...smajl budu vas vsude chvalit...
banan-martin-m z IP 82.209.8.*** | 30.4.2009 19:58
Díky, to potěší. Hezký večer
Kittynkat z IP 90.179.1.*** | 30.4.2009 21:37
Dobrý večer, měla jsem problémy s Main Menu, na stránkách se mi objevovalo jako prázdné, ikdyž jsem v něm měla asi 10 odkazů (podstránek). Tak mě napadlo, že ho vymažu a udělám nové Menu. Hned, jak jsem jej vymazala, mé stránky se ztratily a objevila se chyba 404. Tak jsem to Main menu chtěla v Koši nabídky obnovit, ale nenašla jsem ho tam...a nemám tam ani ostatní smazané nabídky, jako třeba Resources, které jsem předtím také vymazala. Můžete mi prosím poradit, co se s tím dá dělat? Děkuji za odpověď.
ondra z IP 82.209.8.*** | 30.4.2009 21:43
Jde o nejaky redakcni system? Jinak vzdy muzete pozadat o obnovu webu ze zalohy
Kittynkat z IP 90.179.1.*** | 30.4.2009 21:45
Ano. jedná se o Joomla. Co znamená Obnova webu ze zalohy?
Kittynkat z IP 90.179.1.*** | 30.4.2009 21:46
A koho bych o to mohla požádat?
ondra z IP 82.209.8.*** | 30.4.2009 21:48
Problemy s joomlou je lepsi resit primo na diskuzich o joomle jako treba www.joomlaportal.cz/component/option,com_joomlaboard/Itemid,66/  

Na bananu se kazdy den zalohuji obsahy serveru, takze je mozne si nechat web znova nahrat v pripade ztraty dat ci jineho poskozeni
ondra z IP 82.209.8.*** | 30.4.2009 21:50
Staci napsat na podpora@banan.cz z administracniho mailu. Mail musi obsahovat informaci o datumu ze ktereho chcete  obnovit
Kittynkat z IP 90.179.1.*** | 30.4.2009 21:59
Děkuji mockrát za informaci. Přeji pěkný zbytek večera. K.
Kittynkat z IP 90.179.1.*** | 30.4.2009 22:04
Ještě otázka, jsem v administraci, ale nevidím nikde odkaz, přes který bych mohla napsat mail.
ondra z IP 82.209.8.*** | 30.4.2009 22:07
mail se neposila pres administraci. administracnim emailem se myslim mail jez byl zadan pri registraci domeny
Kittynkat z IP 90.179.1.*** | 30.4.2009 22:10
Děkuji.
Kittynkat z IP 90.179.1.*** | 30.4.2009 22:16
Prosím Vás... to, jak jste psal, že mail musí obsahovat datum, ze kterého chci obnovit...tzn. den, kdy se mi to stalo a tím pádem se stav toho mého webu vrátí do stavu před tím datumem?
ondra z IP 82.209.8.*** | 30.4.2009 22:22
nikoliv, datum kdy naposledy byl web v poradku
Kittynkat z IP 90.179.1.*** | 30.4.2009 22:25
Děkuji za ochotu.
banan.czMgr.Radovan Kaluža | 24.6.2005 01:23
http://howto.banan.cz/heslo/
blumen z IP 128.141.28.*** | 26.9.2006 23:34
proc tohle chybi v navodu?!smajl
pletiplot z IP 82.208.32.*** | 10.3.2009 18:08
Ty bys napsal svoje heslo někam na neznámý web, kde se s ním kdoví co stane, kdovíkam se uloží a kdovíkdo ho bude zkoušet?
Roger z IP 83.208.7.*** | 16.2.2007 15:23
Dobrý den,

mám dotaz ohledně omezení přistupu k strankám, hledal jsem rady na
Internetu, ale zatím jsem nic konkretního nenašel. Potřebuji vlastně
zakázat všem přistup na stránky, kromě mě. Vím, že se to dá udělat pomoci
souboru .htaccess:

order allow,deny
allow from 83.208.7.99
deny from all

Problém je ale takový, že já bych potřeboval se tam dostat z vnitřní sítě
192.168.100.2/255.255.255.0 a nevím přesně jak to mám napsát aby mi to
povolilo dostup. Zkoušel jsem

order allow,deny
allow from 81.202.33.99 192.168.100.2/255.255.255.0
deny from all

Ale nepomohlo to,
předem děkuju za pomoc.
honza z IP 85.207.41.*** | 17.2.2007 12:35
Podle me to pomoci .htaccess nepujde, bo se vnitrni IP ven nedostane. Pokud se pletu, tak bych tam nepsal tu masku.
nejsem Mrazik z IP 80.81.232.*** | 20.3.2007 14:22
[1] urob to cez skript v PHP... PHP ti umoznuje zistit aj vnutornu aj vonkajsiu IP.
Tower z IP 83.208.78.*** | 24.6.2005 13:22
Pozor! V kódu .htaccess při úpravě pravidla pro zaheslování je
AuthGrouFile
ale má být
AuthGroupFile
blumen z IP 128.141.28.*** | 26.9.2006 23:18
smajl no tak snad by to tam mohl nekdo opravit v navodu, zbytecne jsem tu prosral dve hodiny smajl
nejsem Mrazik z IP 80.81.232.*** | 2.8.2006 20:59
Vie mi niekto pomôct s mojim problemom ?
Potrebujem nejako na webserveri nastaviť, aby som do urciteho adresara, mohol nahrať len urcite mnozstvo dat ....
Viktor z IP 86.49.43.*** | 3.8.2006 18:00
Myslíš přidělení diskové kvóty?
nejsem Mrazik z IP 80.81.232.*** | 3.8.2006 18:19
presne tak ...
LamiCZ z IP 89.176.188.*** | 16.8.2006 14:27
vyresil jsem to PHPkem, ze proste funkci sectu vsechny velikosti souboru v danem adresari a kdyz prekroci urcity limit, tak uz nelze dal uploadovat (zmizi form) a zakaze se action ;)
Hua z IP 89.102.40.*** | 16.8.2006 15:23
To je ale peknej server killersmajl
LamiCZ z IP 89.176.188.*** | 16.8.2006 18:01
Ntj, ale co s tim jinyho...


Nový komentář

Téma:
Jméno:
Notif. e-mail *:
Komentář:
  [b] [obr]
Odpovězte prosím číslicemi: Součet čísel dvě a šest