www.

Dosud jste si neověřili žádnou doménu, učiňte tak!

Technická podpora - plná podpora .htaccess

« Seznam témat

Pár slov k .htaccess úvodem

Soubor .htaccess (ano, s tečkou na začátku) je jeden z možných způsobů částečné konfigurace WWW serveru Apache. Umístěním tohoto souboru do konkrétního adresáře Vašeho virtuálního serveru, který chcete ovlivňovat, umožní samooblužně definovat spoustu zajímavých věcí spojených s provozem Vašeho virtuálního serveru u nás.
Pro zprovoznění těchto změn (viz menu výše) stačí soubor .htaccess vytvořit v jakémkoli běľném textovém ASCII editoru (bez formátovacích značek, jaké přídává např. MS Word) a nakopírovat ho do takového adresáře, kde má působit. Pravidla fungují dědičně. Chcete-li tedy nějakou vlastnost definovat pro celý Váš virtuální server, nakopírujte ho do kořenového adresáře. Chcete-li nějaké pravidlo aplikovat pouze na konkrétní podadresář, nakopírujte soubor .htaccess jen do něj.
Z bezpečnostních důvodů je soubor .htaccess skrytý, po nakopírování se Vám tedy ve Vašem FTP klientu ukazovat nebude a bude vzbuzovat dojem, jako že v onom adresáři žádný takový soubor není. Budete-li ho chtít změnit, neni nic jednoduššího než přes něj prostě přehrát nový .htaccess.
Pokud ho však budete chtít smazat, z důvodu skrytí to nepůjde standardně. Možných způsobů je i tak více. Např., má-li Váš FTP klient příkazovou řádku, je možné použít příkaz "del .htaccess" a soubor se vymaže. Pokud u Vás takový způsob možný není, pak kontaktuje náš helpdesk - mailem či telefonicky - s žádostí o výmaz administrátorem.

Modifikace chybových hlášení

Nejobyčejnějším použitím může být změna chybových stránek serveru. Jistě to znáte, zadáte nějakou adresu http://www.vasedomena.cz/neexistujiciadresar/ a místo očekávané stránky se Vám ukáže stránka bílá s jakýmsi nesrozumitelným obsahem hovořím o chybě. Příčina je obykle neexistující adresa (chyba 404) či přetížení serveru apod. Všechny tyto chybové stavy lze ošetřit a přesměrovat na Vámi definovanou stránku.

Možné chybové stavy s nejčastějším výskytem:
  • kód 404 - Page not found - Stránka nenalezena
  • kód 403 - Forbidden - Přístup odmítnut
  • kód 500 - Internal Server Error - Interní chyba serveru
  • kód 401 - Authorization Required - Požadována autorizace
  • kód 400 - Bad request - Chybné zadání požadavku
  • a další. Je jich velká spousta viz RFC 2616 - stavové kódy HTTP 1.1 protokolu

Obecná syntaxe obsahu .htaccesu při změně některé chybové hlášky je:
ErrorDocument Číslo_Chyby URL_chybové_stránky

Takže např., budete-li chtít změnit obsah stránky "404 - Stránka nenalezena" za vlastní, s názvem 404.html a umístěním v kořeni Vašeho virtuálního serveru (pro službu WWW - podadresář www), resp. tam, kde je .htaccess, v němž je tento zápis, provedete to takto:
ErrorDocument 404 404.html

Budete-li měnit obsah stránky "403 - Zakázáno" za vlastní, s názvem a umístěním na http://www.mwtest.cz/403.html, provedete to takto:
ErrorDocument 403 http://www.mwtest.cz/403.html

Blokování a povolení přístupu

Může se stát, že se rozhodnete povolit či naopak zakázat přístup do svého virtualního serveru či nějakého podadresáře určité skupině lidí, příp. úplně všem. Tato restrikce se aplikuje velice jednoduše direktivami Allow from - "povol z" či Deny from - "zakaž z", za kterými následuje identifikace toho, na koho omezení či povolení platí. Možné tvary jsou:

  • IP adresa (např. 217.110.25.46)
  • subsíť (např. 47.56.)
  • celé doménové jméno (např. iol.cz)
  • subdoména libokterého řádu v doméně II. řádu (např. user10.prednikopanina.czfree.net)
  • klíčové slovíčko "all" - znamená "vše, pro vše"

V praxi to pak vypadá následně:

Order Deny,Allow
Deny from all
Allow from iol.cz

První řádek se slovíčkem Order vypovídá o pořadí vyhodnocování pravidel. Pozor na to, aby slovíčka Allow a Deny byla oddělena pouze čarkou, nesmí být mezi nimi mezera. V tomto konkrétním případě se tedy prvně vykonají všechna zákazová pravidla, což je v tomto případě "zakaž ze všeho" a teprvé poté se toto pravidlo zmírní "povol z iol.cz". V praxi pak toto funguje tak, že do takto ošetřeného adresáře budou mít přístup pouze lidé připojení přes Telecom (doménu iol.cz využívá Telecom pro své klienty), pro zbytek světa se ukáže chyba 403 - Zakázáno.

Další příklad naopak zakáže přístup jen omezené skupině lidi, zbytku je přístup povolen:

Order Allow,Deny
Allow from all
Deny from .com
Deny from 217.110.25.46

Zde se tedy povolí přístup všem uživatelům, jejichž název připojení do Internetu nepochází z TLD .com nebo jejichž IP adresa není 217.110.25.46. Pokud naopak spadají do jedné z dříve zmiňovaných skupin, je jim přístup do adresáře zakázán s poukázáním na chybu 403.

Alternativní indexový soubor

Pokud chceme změnit defaultní indexový soubor, který se používá jako první při nezadání konkrétního jména souboru v URL, není ani toto s pomocí .htaccess žádný problém. Alternativní názvy index souborů se zapíší do souboru .htaccess jako seznam, který server zpracuje zleva doprava. Když nenajde žádný z definovaných souborů, zobrazí seznam souborů ve složce (pokud to ovšem není blokováno).

DirectoryIndex default.html index.html default.php index.php3 index.php5

V tomto příkladu se stal aktuálním indexovým souborem default.html, pokud nebude nalezen, použije se index.html a tak dále.

Přesměrování

Souboru .htaccess lze s výhodou využít také pro nastavení přesměrování z jedné adresy na druhou. Takové nastavení je dobré např. v případě, že jsme změnili dlouho zavedenou adresu stránek a nechceme přijít o návštěvníky.

Přesměrovávat lze jak jednotlivé soubory, tak také celé adresáře. V tom druhém případě jsou předávány i všechny parametry URL.

Redirect /cesta/stranka.html http://www.novadomena.cz/cesta/stranka.html
Redirect /dokumenty http://www.novadomena.cz/dokumenty

První parametr je cesta k souboru či adresáři, který chceme přesměrovat. Udává se jako cesta relativní. Druhý parametr je pak adresa, na kterou chceme požadavek přesměrovat. Ta se naopak udává absolutně.

Přesměrováváme-li celý adresář, přesměrováváme i všechny soubory uvnitř. Například tedy po zadání adresy www.staradomena.cz/dokumenty/vykaz.xls se dostaneme na adresu www.novadomena.cz/dokumenty/vykaz.xls

Ochrana souboru .htaccess

Pro zvětšení bezpečnosti je dobré samotný soubor .htaccess chránit proti případnému vypsaní jeho obsahu. Stejně a možná tím spíše to platí pro soubor s hesly .htpasswd. Tomu, aby se nedalo s těmito soubory manipulovat přes www browser zabráníme tímto kódem:

<Files .htaccess>
order allow,deny
deny from all
</Files>

Direktiva <Files> říká, že se následné zákazové pravidlo Deny má aplikovat pouze na samotný soubor .htaccess

Lokální nastavení PHP

Pokud máte potřebu lokálně, v rámci svého webu či jen konkrétního podadresáře, měnit některé proměnné v nastavení PHP, tak toho můžete docílit m.j. i v souboru .htaccess.

Základní syntaxe je následující:
php_value jméno_proměnné hodnota
php_flag jméno_proměnné On|Off

První řádek se vztahuje na proměnné, které smějí mít různé hodnoty, zatímco druhý řádek se vztahuje na přepínače, kde smí být pouze hodnota On nebo Off.

Pokud tedy například budete chtít omezit maximální velikost uploadnutého souboru na 30000 bajtů, lze toho poměrně snadno docílit následujícím zápisem:
php_value upload_max_filesize 30000

Pokud máte v úmyslu změnit maximální velikost odeslaných dat, může zápis vypadat například takto:
php_value post_max_filesize 200000

Do třetice, pokud potřebujete zapnout implicitně vypnutné Register Globals, pak toho docílíte zápisem:
php_flag register_globals On

Analogicky se dají měnit i další hodnoty v nastavení PHP.

Povolení/zakázání listingu adresáře

Na našich serverech je implicitně zakázán listing adresářů. Znamená to, že v případě, že je v internetovém prohlížeči zadána adresa v níž neexistuje indexový soubor, je jako výstup odeslána stránka s HTTP kódem 403 - Zákázáno.

Pokud tomuto chcete zabránit a máte v úmyslu vytvořit složku, jejíž obsah nebude skryt ale naopak přehledně setříděn a nabídnut ke stažení, můžete to udělat přidáním následujícího řádku do souboru .htaccess :

Options +Indexes

Analogicky, chcete-li výpis adresáře opět zakázat, stačí tento řádek ze souboru .htaccess vymazat a vrátit se tak k defaultnímu nastavení serveru - případně je možné v zápisu pravidla změnit znaménko plus na znaménko mínus, což bude mít ten samý efekt.

Formátování výpisu složky

Výchozí výpis adresáře je vcelku dosti fádní. Není problém ho ale změnit tříděním, přidáním formátovaného popisu a vlastních ikonek.

Třídění

IndexOrderDefault Ascending|Descending Name|Date|Size|Description

Soubory v adresáři se implicitně vypisují řazené abecedně podle jmen souborů. Direktiva IndexOrderDefault umí toto pořadí změnit. První argument rozhoduje o tom, zda se bude řadit podle abecedy Ascending nebo naopak Descending. Druhý argument znamená jméno sloupce podle kterého se bude třídit:

  • Name - název souboru
  • Date - datum souboru
  • Size - velikost souboru
  • Description - popis souboru

Takto lze kupříkladu seřadit soubory v opačném pořadí dle jejich velikosti. Největší soubory tak budou nahoře, nejmenší naopak dole.

IndexOrderDefault Descending Size

Pokud chcete jako úplně první před všemi soubory uvádět adresáře, lze toho docílit následujícími direktivami:

IndexOptions FancyIndexing
IndexOptions FoldersFirst

Přidání popisku

Listing adresáře implicitně neobsahuje popisky souborů. Toto se musí přidat direktivou AddDescription.

AddDescription "popis" soubor|složka [soubor|složka]
AddDescription "Karel Sokol" sokol.jpg

Takto lze kupříkladu přidat popisek "Karel Sokol" k souboru obrázku sokol.jpg:

Rozšíření a formátování popisu

Popisek může být implicitně dlouhý jen 23 znaků. Toto lze ale rozšířit na libovolnou délku direktivou IndexOptions. Pokud budeme chtít popisek rozšířit např. na 35 znaků, použijeme direktivu IndexOptions následně:

IndexOptions DescriptionWidth=35

Popis může obsahovat také formátování tagy jazyka HTML. Je třeba dát ale pozor na maximální def. délku. Při jejím překročení to může mít neblahý vliv na celý listing adresáře. Chcete-li délku popisku nastavit na maximální možnou hodnotu, zadejte hvězdičku místo čísla (DescriptionWidth=*).

Ikonky

Některé typy souborů ikonku ve výpisu složky vůbec nemají nebo můžete mít jinou představu o jejím vzhledu. Direktiva AddIcon změní nebo přidá ikonku.

AddIcon (Alt,/cesta/ikonka.gif) soubor

Alt - alternativní text pro případ nezobrazení ikonky.
cesta - relativní cesta k ikonce.
soubor - částečný nebo úplný název souboru, přípony nebo hvězdičkové konvence.
Složkám lze přidat ikonku zadáním názvu souboru ^^DIRECTORY^^.
Prázdným řádkům lze též přidat ikonku zadáním názvu souboru ^^BLANKICON^^, aby se úhledněji formátovaly.

Zde v prvním řádku přidáme ikonku "pic_icon.gif", která je umístěna v adresáři "../ikonky" a má nastavený alternativní text na "Alt". Taková ikonka se bude ukazovat pro všechny soubory typů .gif .jpg a .png. Ve druhém řádku analogicky přidáme ikonku pro archivy typu .zip a .arj. Ve třetím řádku přidáme ikonku pro podadresáře. Ty nebudou mít náhradní text Alt. Z příkladů je zřejmé, že pokud nezadáváme alternativní text, adresu zdrojového obrázku ikonky neuzavíráme do závorek.

AddIcon (Alt,../icons/pic_icon.gif) .gif .jpg .png
AddIcon (Alt,../icons/pack_icon.gif) .zip .arj
AddIcon ../icons/dir_icon.gif ^^DIRECTORY^^

Související odkazy