Práce s .htaccess

Technicka podpora
2016-04-30 00:40

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 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

Průměrné hodnocení: 0 (0 hlasů)

K tomuto záznamu nemůžete připojit komentář.