IT ČLÁNKY A NÁVODY - PORADŇA - IT MAGAZÍN
Ďakujeme za hodnotenie článkov. Hodnotením prispievate k ich pravidelnej aktualizácii a zvyšovaniu ich kvality.
Podporte nás:
23.05.2016
.htaccess
Obsah článku: .htaccess | Tvorba .htaccess | Ochrana proti hacknutiu stránky | Presmerovanie stránok | Dynamické html | Blokovanie prístupov na stránku | Zakázať výpis adresára | Zakázať linkovanie obrázkov | Ochrana pred spambotmi
Čo je .htaccess?
Htaccess je konfiguračný súbor webového servera.
Htaccess umožňuje napríklad presmerovanie stránok, vypínanie a zapínanie indexov, nastavenie chybových stránok, obmedzenie prístupu, zaheslovanie priečinka, zabránenie linkovaniu súborov zo stránky (obrázky, hudba, štýly, java...) a množstvo iného.
Ako vytvoriť .htaccess?
Otvorte si textový editor (napr. PSPad). Prideľte prázdnemu súboru bez názvu súbor koncovku .htaccess.
Dôležité: Súbor nesmie obsahovať žiadne názvy, len koncovku.
Príklad:
nieco.htaccess – nesprávne
.htaccess – správne

K vytvoreniu tohto súboru môžete použiť napríklad program Total Commander, ktorý umožní premenovať akýkoľvek súbor.
Zapnutie Rewrite Modu
RewriteEngine On
Poznámka: RewriteEngine On zadávajte len raz, neopakujte tento zápis.
Nastavenie časového pásma
SetEnv TZ Europe/Bratislava
Poznámka: Pre Českú republiku: Europe/Prague
Preskočiť upozornenie sťahovania
AddType application / octet-stream. Pdf AddType application / octet-stream. Rar
Poznámka: Týmto spôsobom zabránime, aby vyhodilo upozornenie návštevníkom stránky či súbor uložiť alebo otvoriť.
Ochrana proti hacknutiu webstránky
# Funkcia čiastočne zabráni hacknutiu stránky
RewriteCond %{QUERY_STRING} proc/self/environ [OR]
RewriteCond %{QUERY_STRING} mosConfig_[a-zA-Z_]{1,21}(=|\%3D) [OR]
RewriteCond %{QUERY_STRING} base64_encode.*(.*) [OR]
RewriteCond %{QUERY_STRING} GLOBALS(=|[|\%[0-9A-Z]{0,2}) [OR]
RewriteCond %{QUERY_STRING} _REQUEST(=|[|\%[0-9A-Z]{0,2})
Poznámka: Z bezpečnostných dôvodou nie je možné sem vypísať všetky funkcie.
TIP: Použite napríklad funkciu premenovať súbor "AccessFileName htacc.ess".
Kompresia súborov
# Komprimovať text, HTML, JavaScript, CSS, XML:
AddOutputFilterByType DEFLATE text / htm
AddOutputFilterByType DEFLATE text / html
AddOutputFilterByType DEFLATE text / xml
AddOutputFilterByType DEFLATE text / css
AddOutputFilterByType DEFLATE text / plain
AddOutputFilterByType DEFLATE application / xml
AddOutputFilterByType DEFLATE application / xhtml + xml
AddOutputFilterByType DEFLATE application / rss + xml
AddOutputFilterByType DEFLATE application / javascript
AddOutputFilterByType DEFLATE application / x-javascript
Poznámka: Táto funkcia zmenší súbory a dociely rýchlejšie načítanie stránky
Funkčnosť súbor .htaccess.
Najskôr je vhodné vedieť, že pre osobné komentáre (poznámky) je potrebné použiť znak mriežky # na začiatku riadku.
Príklad:
#Tento súbor vytvoril A.O.
Začneme chybovými stránkami.
Chybové stránky sú informačné stránky zo servera, ktoré nie je možné zobraziť návštevníkom z rôznych dôvodov. Buď sa dané stránky na severoch už nenachádzajú, alebo prístup k nim bol zablokovaný.
Príklad:
# 403 znamená zákaz - napríklad pokiaľ sa pokúšate dostať do adresára, ktorý to nepovoľuje
ErrorDocument 403 http://webstranka.sk/chybova_stranka.php
# 404 znamená nenájdený - pokiaľ server nenašiel požadovanú stránku
ErrorDocument 404 http://webstranka.sk/chybova_stranka.php
# 500 znamená vnútornú chybu servera – v prípade ak urobíte chybu v .htaccess
ErrorDocument 500 http://webstranka.sk/chybova_stranka.php
http://webstranka.sk/chybova_stranka.php - adresa umiestnenia chybového hlásenia
chyba.php – informačná stránka o chybovom hlásení
(text píšte bez diakritiky a minimálne a minimálne v dvoch jazykových mutáciách).
Dôležité: Na začiatku zdrojového kódu chybovej stránky je potrebné umiestniť nasledovný kód z dôvodu, aby vyhľadávače vedeli rozpoznať, či daná stránka ktorú sa pokúsili načítať, existuje, alebo bola presunutá.
<?php header("HTTP/1.1 404 Not Found"); ?>
Presmerovanie stránkok pomocou htaccess
Nato, aby ste mohli v htaccess súboru definovať presmerovanie daných stránok je potrebné povoliť konfiguráciu súboru php.ini prostredníctvom knižnice mod_rewrite zadaním príkazu:
RewriteEngine on
Presmerovanie stránok je samozrejme možné aj cez javascript, prípadne použitím meta tagu, avšak prostredníctvom smerovania cez .htaccess ho úspešne spracujú všetky vyhľadávače a roboty.
‹meta http-equiv="refresh" content="4;url=http://ina.stranka.sk"›
Príklad:
RewriteEngine on
RewriteRule stara_stranka\.php /nova_stranka.html [R=301]
RewriteEngine on
RewriteRule stara_stranka\.php http://www.vasa_stranka.sk [R=301]
# alebo presmerovanie celej stránky z jednej domény na druhú
RewriteEngine on
RewriteRule (.*) http://www. vasa_stranka.sk/$1 [R=301]
# alebo presmerovanie všetkých stránok z jednej domény na druhú
RewriteEngine on
RewriteCond %{REQUEST_URI} ^(.*).php
RewriteRule (.*) http://www. vasa_stranka.sk/$1 [R=301]
# alebo presmerovanie obsahu stránky bez www na stránku s www
RewriteEngine On
RewriteCond %{HTTP_HOST} ^ vasa_stranka\.sk [nc]
RewriteRule (.*) http://www.vasa_stranka.sk/$1 [R=301,L]
# prípadne naopak z www na bez www
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.vase-domena\.cz [nc]
RewriteRule (.*) http://vase-domena.cz/$1 [R=301,L]
# alebo presmerovanie dynamickej adresy na statickú, kde id= je volaná stránka
RewriteRule ^ subor.jsp? id = (. *) $ / nova_stranka.html [L, R = 301]
# alebo presmerovanie subdomény
RewriteEngine on
RewriteRule (.*) http://nova-subdomena.vasa_stranka.sk/$1 [R=301,QSA]
# alebo presmerovanie subdomény do priečinka
RewriteEngine on
RewriteCond %{http_host} ^stara-subdomena\.vasa_stranka\.sk
RewriteRule stara-subdomena/(.*) http://vasa_stranka.sk/$1 [R=301,QSA]
# alebo presmerovanie subdomény do foldra s www
RewriteEngine on
RewriteCond %{http_host} ^(www\.)?stara-subdomena\.vasa_stranka\.sk
RewriteRule stara-subdomena/(.*) http://vasa_stranka.sk/$1 [R=301,QSA]
Vysvetlenie čo znamená, ktorý parameter:
[L] - Ďalší preklad adresy nebude potrebný – pokiaľ sa adresa raz presmeruje, nebude sa už skúšať v ďalších podmienkach.
Pokiaľ by ste na seba vzájomne presmerovali dve stránky, presmerovanie by sa nikdy neskončilo.
[R] - Dočasné presmerovanie (302).
[R=301] - Trvalé presmerovanie.
[QSA] - Do výslednej adresy sa má pridať aj reťazec s otáznikom.
[NC] - Nerozlišovať veľkosť písmen.
Dynamciké html
Prevod adries, alebo ako zmeniť adresa.php na adresa.html bez straty dynamiky?
Príklad:
www.vasa_stranka.sk/index.php?stranka=o_nas
www.vasa_stranka.sk/index.php?stranka=kontakt
zmeníme na
www. vasa_stranka.sk/o_nas.htm
www. vasa_stranka.sk/kontakt.htm
pomocou príkazu:
RewriteEngine on
RewriteCond %{REQUEST_URI} ^(.*).htm
RewriteRule ^(.*).htm index.php?stranka=$1 [nc,L,QSA]
→Kliknite pre zobrazenie spambotov
→Ukážka na stiahnutie .htaccess
Poznámka: TXT súbor stačí len premenovať na .htaccess
Blokovanie prístupu k dokumentom (Blokovanie IP adresy a masky)
Pomocou .htaccess je možné obmedziť prístup návštevníka použitím direktív Deny a Allow:
* kompletné meno domény stranka.sk, prípadne subdomény nieco.stránka.sk
* kompletnú IP adresu alebo časť IP adresy (adresa siete)
* IP adresu spolu s maskou siete
Order Allow,Deny #Deny (zamietnutie) má vyššiu prioritu
alebo
Order Deny,Allow #vyššiu prioritu má Allow (povolenie)
Príklad:
# Úplne blokovanie prístupu k dokumentom
Deny From All
#Úplne blokovanie prístupu k súborom
Order Allow,Deny
# Blokovanie prístupu k dokumentom zo stránky nieco.sk
Order Deny,Allow
Deny From nieco.sk
# Blokovanie prístupu k súborom, okrem požiadaviek zo stranka.sk
Order Deny,Allow
Deny From All
Allow From stranka.sk
# Blokovanie IP adresy
Order Allow, Deny
Deny from x.x.x.x
Deny from x.x.x.
Allow from x.x.x.y
Allow from all
Miesto x doplňte IP adresu (prípadne masku siete).
Deny – zakázaná IP
Allow –Povolená IP
# Blokovanie linkovania obrázkov z nasledujúcich webov
RewriteEngine On
RewriteCond% {HTTP_REFERER}! ^ $
RewriteCond% {HTTP_REFERER}! ^ Http (s)? :/ / (. * \.)? stranka1.sk [NS]
RewriteCond% {HTTP_REFERER}! ^ Http (s)? :/ / (. * \.)? stranka2.sk [NS]
RewriteCond% {HTTP_REFERER}! ^ Http (s)? :/ / (. * \.)? stranka3.sk [NS]
RewriteRule \ (jpeg | jpg | gif | png). $ Http :/ / nieco.sk / bad.jpg [NC, R, L]
# Blokovanie odkazov na vašu stránku zo stránok stranka1 - 3
RewriteEngine on
RewriteCond %{HTTP_REFERER} ^http://.*stranka1\.sk [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://.*stranka2\.sk [NC,OR]
RewriteCond %{HTTP_REFERER} ^http://.*stranka3\.sk [NC]
RewriteRule .* - [F]
# Blokovanie stránky
order allow,deny
deny from stranka.sk
deny from subdomena.stranka.sk
allow from all
Options –Indexes
Návštevník stránky pri snahe sa dostať do niektorého adresára bude automazicky presmerovaný na chybovú stránku 403.
Povolenie výpisu s adresára – sa neodporúča z dôvodu, že návštevník uvidí súbory uložené na Vašej stránke.
Options +Indexes
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://([-a-z0-9]+\.)?stranka\.sk [NC]
RewriteCond %{HTTP_REFERER} !google\. [NC]
RewriteCond %{HTTP_REFERER} !yahoo\. [NC]
RewriteCond %{HTTP_REFERER} !altavista\. [NC]
RewriteCond %{HTTP_REFERER} !lycos\. [NC]
RewriteRule \.(gif|jpg|png)$ pozor.gif [L]
Poznámka: V prípade linkovania obrázkov treťou stranou, sa zobrazí podstrčený obrázok. Umiestnenie, názov a dizajn obrázku je ľubovolné.
# SPAMboty budú presmerované mimo stránku
RewriteCond %{HTTP_USER_AGENT} názov_spam_bota [OR]
RewriteCond %{HTTP_USER_AGENT} názov_spam_bota [OR]
# SPAMboty budú presmerované na stránku spampoison.com.
RewriteRule ^.*$ http://www.spampoison.com/ [L]
V prípade, ak nepomohla žiadna z vyššie uvedených možností, alebo sa nazdávate, že nie ste dostatočne technicky zdatný/ná, neváhajte si objednať servisný výjazd.