Dnes je využitelnost textového souboru htaccess obrovská. Htaccess funguje, na Apache serveru, který dnes běží téměř na každém webovém serveru. Využít ho lze třeba, máte-li Webhosting a pochopitelně nemáte přístup do globálního nastavení Apache serveru, nastavíte si jej touto cestou. Htaccess využijete i v případě, že si hostujete sami. Ne pro každou část webu je nejoptimálnější globální nastavení Apache serveru, každou část webu si tímto textovým souborem můžete unikátně nastavit podle chuti, tak aby nastavení vyhovovalo webové aplikaci.
S htaccessem se můžete potkat ve dvou formách. První forma je základní, jakožto textový soubor: htaccess.txt, u toho je problém, že když si potencionální útočních oskenuje váš web pomocí ACP( Access Checker Page ) vyjede mu, že lze na htaccess.txt přistoupit, což pro vás není dobré, aby někdo krom vás znal nastavení vašeho Apache serveru. Můžete to ošetřit tak, že odstraníte příponu a jako předponu dáte „.“ ( tečku ), a z textového souboru htacess.txt se stane skrytý textový soubor .htaccess, tento textový soubor tedy nebude čitelný, ani přístupný zvenčí. Další důležitou věcí je, že htaccess.txt platí pro všechny adresáře níže v kořeni rootu. Dáte-li ho do rootu webu, bude platit pro celý web, nedáte-li o adresář níže jiný, který vyruší nastavení toho výše, co je v rootu.
Nastavení Apache serveru
Výpis chyb skriptování on/off
php_flag display_errors off
php_flag html_errors off
Erorr dokumenty
Error dokumenty, to jsou stránky zobrazující se po nějaké události, která skončí chybou.
Seznam errorů a hlášek
300 – Multiple Choices – Více možností
301 – Moved permanently – Přesměrování
302 – Moved temporarily – Dočasné přesměrování
303 – See Other – Je možné najít pod jinými URL
304 – Not modified – Nezměněno
305 – Use Proxy – Použijte proxy server
307 – Temporary Redirect – Dočasně přesměrováno
400 – Bad request – Chybný požadavek
401 – Unauthorized – Neautorizovaný přístup
402 – Payement Required
403 – Forbidden – Přístup zakázán
404 – Not found – Soubor nenalezen
405 – Method Not Allowed – Nepovolená metoda
406 – Not Acceptable – Neakceptovatelný požadavek
407 – Proxy Authentication Required – Požadovaná proxy autentifikace
408 – Request Timeout – Vypršení doby požadavku
409 – Conflict – Konflikt
410 – Gone
411 – Lenght Required
412 – Precondition Failed
413 – Request-url Entity Too Large
414 – Request-url Too Long
415 – Unsupported Media Type – nepodporovaný typ média
416 – Requested Range Not Satisfiable
417 – Expectation Failed
500 – Internal server error – Vnitřní chyba na serveru
501 – Not implemented – Neimplementováno
502 – Bad gateway – Špatná brána(proxy)
503 – Service unavailable – Služba není dostupná
504 – Gateway Timeout – Doba průchodu bránou vypršela
505 – HTTP Version Not Supported – Nepodporovaná verze HTTP
Zápis do .htaccess
ErrorDocument 403 /chyby/403.HTML
ErrorDocument 404 /chyby/404.html
ErrorDocument 500 /chyby/500.html
ErrorDocument 502 /chyby/502.html
ErrorDocument 503 /chyby/503.html
Dle umístění textového souboru .htaccess vytvoříte adresář „chyby“ do něho pak vytvoříte stránky 403.html, 404.html, atd… Do nových stránek si můžete zapsat libovolný kód.
Pravidla souborů
Někdy potřebujete speciální nastavení pouze pro jeden nebo více souborů.
<Files soubor.přípona>
Pravidla
</Files>
Například:
<Files index.php>
php_flag display_errors off
</Files>
Pravidla formátů
Nebo někdy potřebujete speciální nastavení pouze pro jeden nebo více typů souborů.
<FilesMatch ".(přípona|přípona|přípona)$">
Pravidla
</FilesMatch>
Například:
<FilesMatch ".(py|js|ztmp|vdf|png|bmp|ico|jpg|gif|jpeg|pdf|cfg|ini|dat|cmd|exe|txt)$">
# Udává typ souboru
ForceType application/octet-stream
# Udává, jak se ten soubor má chovat. Attachment znamená „příloha“ = soubor nepůjde otevřít, jen #stáhnout.
Header set Content-Disposition attachment
</FilesMatch>
Všechny soubory s příponami vypsanými ve FileMatch půjdou návštěvníkem pouze a jedině stáhnout. Nepůjdou otevřít ani spustit.
Přístup na webu Allow / Deny
Naučíme se nejdůležitější věc, dokázat si ošetřit, kam návštěvníci smí a kam ne.
- Allow znamená, že přístup povolen,
- Deny znamená, že tam mají přístup odepřený.
Přístup odepřený je chyba s kódem 403, naskočí mu tedy váš 403 dokument.
- Příklad: Zablokování přístupu všem a následné povolení uživatelům, podle jejich IP adresy.
Order Deny,Allow
Deny from all
#Moje kancelář
Allow from 12.123.123.123
#Můj domov
Allow from 123.123.123.132
#Kolega Ivan H. dis.
Allow from 12.12.12.123
#Kolega Bc. Jiří V.
Allow from 12.12.12.123
#Celá firma, má-li IP adresu z jednoho rozsahu
Allow from 12.12.12.*
- Příklad: Povolení přístupu všem, zablokování uživatelů dle jejich IP adres.
Order Deny,Allow
Allow from all
#Spammer Loupák
Deny from 12.123.123.123
#Hacker Petrick
Deny from 123.123.123.132
#Hacker Anonym
Deny from 12.12.12.123
#Spammer z číny,blokace hostname providera, například 67456.dynb.aprise.com.cn
Deny from *.cn
Zakázání přístupu všem do souboru
Například konfigurační soubory webových aplikací s důležitými daty.
- Zablokování přístupu všem a následné povolení uživatelů,, podle jejich IP adresy.
<Files phpinfo.php>
Order Deny,Allow
Deny from all
#Moje kancelář
Allow from 12.123.123.123
</Files>
- Zakázání přístupu všem do nějakých souborů dle jejich přípony a následné povolení jedincům, podle jejich IP adresy.
Zakázání přístupu všem do souborů s určitou příponou. Například zakázání přístupu zvenčí pro všechny python soubory ( .py ) a shellové skripty ( .sh )
<Files *.py>
Order Deny,Allow
Deny from all
#Moje kancelář
Allow from 12.123.123.123
</Files>
<Files *.sh>
Order Deny,Allow
Deny from all
#Moje kancelář
Allow from 12.123.123.123
</Files>
Nebo jednodušeji:
<FilesMatch ".(py|sh)$">
Order Deny,Allow
Deny from all
#Moje kancelář
Allow from 12.123.123.123
</FilesMatch>
Options +Indexes
- Výpis souborů v adresáři.
Options +Indexes
Options -Indexes
Přepis URL
Když jste firma a máte více domén, například example.cz, example.sk, example.com, exampla.org, example.net. Jako hlavní doménu webhostingu si nastavíte example.cz a ostatní domény přidáte jako aliasy. Následně do jejich rootu vytvoříte .htaccess, který přesměruje aliasy na hlavní doménu.
- Například pro doménu example.sk:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?examle.sk$
RewriteCond %{REQUEST_URI} !^/aliasy/example.cz/
RewriteRule (.*) /aliasy/example.cz/$1 [L]
- Prosté přesměrování ze stránky na stránku
RewriteEngine on
RewriteRule https://example.sk https://www.example.cz [R=301]
Možnost využití více domén.
RewriteEngine on
RewriteRule /stranka1.php /stranka.php [R=301]