Práce s .htaccess¶
Soubor .htaccess slouží k lokálnímu nastavení některých direktiv webserveru Apache uživatelem, aniž by bylo nutné zasahovat do konfigurace virtualhostu. Volby v něm definované platí vždy v adresáři, ve kterém je umístěný a v jeho podadresářích.
Pozor, řada redakčních systémů a jiných webových aplikací již svůj .htaccess má a zejména rewrite pravidla v něm obsažená jsou nutná pro jejich fungování. V takovém případě by neměl být tento soubor nahrazen, ale do jeho obsahu doplněny požadované direktivy s přihlédnutím k tomu, aby nebyly v konfliktu s jinými, již v něm definovanými.
Zaheslování stránek¶
Jednou z oblíbených možností je nastavení jednoduché a bezpečné autentizace.
AuthUserFile .htpasswd
AuthType Basic
AuthName "Zde bude text zobrazený u výzvy k zadání jména a hesla"
Require valid-user
V případě SSH přístupu je možné soubor .htpasswd vygenerovat přímo na serveru:
htpasswd -bc .htpasswd uzivatel heslo
V ostatních případech, pokud není k dispozici ani jiný linuxový systém (příkaz htpasswd je součást balíčku apache2-utils), je možné použít některý z online generátorů:
http://www.htaccesstools.com/htpasswd-generator/
Použití online generátoru však může představovat riziko, nelze poskytnout žádnou záruku, že si autor takového generátoru jména a vygenerovaná hesla neukládá.
Rewrite pravidla¶
Modul Rewrite umožňuje přesměrovávat, podstrkávat a upravovat URL. Jeho možnosti jsou velmi široké, následující příklady tak představují jen malou ukázku několika obvyklejších způsobů použití. Pokud budou v souboru .htaccess rewrite pravidla využívána, je nutné na jeho začátek umístit jejich povolení:
RewriteEngine On
Přesměrování na www verzi domény¶
RewriteCond %{HTTP_HOST} ^nejakadomena\.cz [nc]
RewriteRule (.*) http://www.nejakadomena.cz/$1 [R=301,QSA,L]
Přesměrování na jinou doménu se zachováním parametrů za lomítkem¶
RewriteCond %{HTTP_HOST} nejakadomena\.cz [NC]
RewriteRule ^/(.*)$ http://jinadomena.cz/$1 [R=301,QSA,L]
Jednoduché podstrčení¶
RewriteRule pozadovany\.php /podstrceny.php
RewriteRule ^pozdadovana-stranka /podstrcena.php
RewriteRule ^pozdadovany-obsah /index.php?stranka=pozadovana
RewriteRule ^novinky/ /index.php?page=novinky&strana=1&razeni=nejnovejsi
Podstrčení hezčí a lépe zapamatovatelné URL s proměnnou¶
Následující pravidlo umožní, že "hezká" URL www.nejakyeshop.cz/vysavac-23 je interpretována jako www.nejakyeshop.cz/index.php?kategorie=produkty&typ=vysavace&id=23:
RewriteRule ^vysavac-(.*) index.php?kategorie=produkty&typ=vysavace&id=$1 [QSA,L]
Rozdíl mezi podstrčením a přesměrováním je ten, že při podstrčení zůstává požadovaná URL nezměněná, ale klientovi je zobrazen obsah té podstrčené při stavovém kódu HTTP 200 OK.
Přesměrování naopak URL přepíše a vrátí kód HTTP 301 nebo 302.
Další příklady a možnosti využití naleznete v dokumentaci:
http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html
http://httpd.apache.org/docs/2.0/misc/rewriteguide.html
Přesměrování¶
Dále je možné nastavit klasické přesměrování bez použití mod_rewrite:
Redirect 301 /starysoubor.php /novysoubor.php
Redirect 301 /stara_stranka.html http://www.nejakadomena.cz/nova-stranka/
Vlastní chybové hlášky¶
Pomocí .htaccess je také možné nastavit vlastní chybové stránky, například takto:
ErrorDocument 401 /chyby/vyzadovana_autorizace.php
ErrorDocument 403 /chyby/pristup_odepren.php
ErrorDocument 404 /chyby/nenalezeno.php
ErrorDocument 500 /chyby/interni_chyba_serveru.php
ErrorDocument 503 /chyby/docasne_nedostupne.php
Povolení procházení adresáře (directory listing)¶
Standardně je nastaveno, že při pokusu o přístup do adresáře, kde chybí index.php je klient odmítnut s hláškou 403 Forbidden. V některých situacích může být žádoucí, aby se obsah adresáře namísto toho vypsal a bylo možné otevírat jednotlivé soubory v něm obsažené.
Option +Indexes