.htaccess tajne

Što je .htaccess? Za što se koristi? Koja su najčešća podešenja?

.htaccess je konfiguracijski dokument koji se nalazi u root folderu web stranice, a služi za kontrolu i konfiguraciju Apache web servera. Poželjno je dodati kako samo Linux serveri imaju .htaccess dokument, što znači da ga nećete pronaći na Windows serverima.

.htaccess je izrazito moćan “alat”, a ako ga ne znate koristiti radije ni nemojte, već ostavite profesionalcima da urade ono što je potrebno. Razlog je što pomoću .htaccessa pored ostalog kontrolirate i pristup webu, što znači da nepravilnim korištenjem možete napraviti dosta štete.

Uređivanje .htaccessa je vrlo jednostavno, od alata Vam treba samo tekstualni editor kao što je Notepad, a možete ga editirati i na samom webu unutar Vašeg browsera. Potrebno je znati da ukoliko uređujete .htaccess pomoću Notepada ne trebate spremiti dokument sa ekstenzijom .txt ili bilo kojom drugom. Ukoliko to ipak učinite, pogrešku možete riješiti kada dokument uploadate na server gdje ćete .htaccess jednostavno preimenovati.

Budući da se uređvanje radi u jednostavnom tekst editoru, to znači da se sve komande pišu ručno, npr. Redirect 301 /nekifolder/starifile.html /novifolder/novifile.html. Ovo će možda obeshrabriti neke od čitatelja, ali uz vezu sa internetom ovo nije tako teško i za sve se može pronaći tutorial i savjet.

Naprednijim čitateljima je poznato što je komentiranje koda, koje je također moguće i u .htaccessu. Komentiranje koda u .htaccess dokumentu se radi pomoću znaka # Jednostavno na početku reda upišite ovaj znak za daljnje komentiranje, a za komentiranje u više redova potrebno je na početku svakog reda unijeti znak #

Slijedi nekoliko primjera češćih primjena .htaccess dokumenta…

.htaccess redirekcije

redirekt

Osobno sam .htaccess najviše koristio za kreiranje 301 redirekcija. Redirekcije možete kreirati prema nekom drugom URLu na istom ili drugom serveru/domeni, prema preferiranoj verziji domene (www ili bez www)…

Ovdje možete koristiti kako relativne tako i apsoutne URLove. Razlika između apsolutnog i relativnog URLa je u tome što relativni URL pokazuje lokaciju dokumenta na istoj domeni (/neki-dokument.html), te u sebi nema naziv domene, dok sa druge strane apsoutni URL je potpuni URL sa domenom u sebi (http://www.vasweb.hr/neki-dokument.html).

Običan 301 .htaccess redirekt

Jednostavna 301 redirekcija putem .htaccess dokumenta kreira se na ovaj način:

Redirect 301 /nekifolder/starifile.html /novifolder/novifile.html

Prva riječ “Redirect” govori da je u pitanju redirect, a 301 kaže koja je vrsta u pitanju. Zatim unosimo putanju starog dokumenta, a na kraju putanju novog dokumenta. Odaberite save, i to je to. Redirekcija je odmah aktivna.

U naredbi iz primjera, 301 označava trajnu redirekciju, što znači da je dokument trajno prebačen na novu lokaciju.

Ovdje možete koristiti i 302 redirekt za privremenu redirekciju, npr. kod shopping portala kada je proizvod privremeno nedostupan pa se radi redirekcija na stranicu koja to i govori kupcu.

.htaccess redirekcija direktorija

Uz pomoć htaccessa možete redirektati i cijele direktorije:

Redirect /stari-direktorij http://novisite.com/novi-direktorij

Ukoliko netko traži bilo koji dokument iz starog direktorija biti će redirektan na dokument istog naziva na novom webu.

.htaccess redirekcija na preferiranu verziju, bez www. na www:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^vasweb.com$
RewriteRule (.*) http://www.vasweb.com/$1 [R=301,L]

U primjeru zamijenite vasweb.com sa svojom domenom i svakom će se posjetitelju pokazivati verzija vaše domene sa www u sebi.

.htaccess redirekcija na preferiranu verziju, sa www. na bez www:

Ukoliko ne želite imati www u nazivu domene u .htaccess unesite ovo:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.yoursite.com [NC]
RewriteRule ^(.*)$ http://yoursite.com/$1 [R=301,L]

Nekoliko objašnjenja vezana za prethodna dva primjera:

RewriteCond %{HTTP_HOST} govori kako je u pitanju http host

[NC] govori web serveru da http host nije case sensitive.

[R=301,L] govore web serveru da je u pitanju 301 redirekt (R=301), te da je u pitanju zadnja naredba nakon čega se može prikazati rezultat u browseru (L).

Kreiranje Error dokumenata

Dawson


Pomoću .htaccess dokumenta ćete reći web serveru što da radi kada se dogode određene greške.

404 greška

ErrorDocument 404 /error_stranice/404.html

Ukoliko posjetitelj Vašeg weba naiđe na nepostojeću stranicu prikazati će mu se stranica 404.html koja se nalazi u folderu error_stranice. Vi naravno morate dizajnirati 404.html stranicu i postaviti je u zadani folder.

500 greška

ErrorDocument 500 /error_stranice/500.html

U slučaju ozbiljnih problema sa webom gdje se generira 500 greška posjetitelju se pokazuje 500.html, koji Vi naravno morate kreirati i postaviti u zadani folder.

 Zabrana pristupa dokumentu uz pomoć .htaccess-a

Ukoliko želite zabraniti pristup određenom dokumentu to možete učiniti uz pomoć ovo malo koda ispod (vasdokument.jpg zamijenite sa nazivom svog dokumenta):

<files vasdokument.jpg>
order allow,deny
deny from all
</files>

Zaštita od hot linkanja

hotlinkanje

Hot linkanje je u biti krađa Vašeg sadržaja na način da se na nekoj drugoj domeni na primjer pokazuju Vaše slike koje se učitavaju direktno sa Vašeg servera. Ovo će  Vam također prouzročiti i veću potrošnju bandwidtha, što će Vas u konačnici i koštati. Najčešće se hotlinkaju slike ili video sadržaj ali moguće je hot linkanje java scripta i CSS-a.

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?vasadomena.hr/.*$ [NC]
RewriteRule \.(jpg|gif|css)$ – [F]

Da bi ovaj kod radio na serveru mora biti omogućen “mod_rewrite”. Stoga prije implementacije provjerite ovo sa Vašim hostingom.

Gore navedeni kod će blokirati hot linkanje .jpg .gif i CSS dokumenata sa svih domena osim vasadomena.hr

Moguće je lopovima pokazati alternativni sadržaj, a to ćete učiniti dodavanjem ovog koda u .htaccess:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?vasadomena.hr/.*$ [NC]
RewriteRule \.(gif|jpg)$ http://www.vasadomena.hr/hotlink.jpg [R,L]

Pomoću ovog koda će se umjesto hot linkanih .gif i .jpg dokumenata pokazivati hotlink.jpg slika, koja može sadržavati što god Vi želite, npr. klinca od gore.

Blokiranje pristupa IP adresama

stop

Ponekad ćete željeti blokirati pristup posjetiteljima sa određenih IP adresa, a to se radi na ovaj način. U .htaccess dodajte sljedeći kod:

order allow,deny
deny from 255.0.0.0
deny from 123.45.6.
allow from all

Dodavanjem ovog koda u .htaccess ćete blokirati pristup posjetama sa 255.0.0.0 i 123.45.6.

Moguće je učiniti i obratno, tj. omogućiti pristup samo jednoj IP adresi:

order allow,deny
allow from 255.0.0.0
deny from all

Samo će posjete sa 255.0.0.0 moći pristupiti webu.

Svi blokirani posjetitelji će dobiti 403 poruku, čiji sadržaj možete podesiti na način koji je već opisan u ovom članku.

Blokiranje pristupa referrerima

Pored blokiranja putem IP adresa moguće je blokiranje pristupa prema tome otkuda posjetitelj dolazi. Ovi posjetitelji vrlo vjerojatno nemaju časne namjere, te traže načine kako hakirati Vaš web. Stoga ih je bolje odmah blokirati putem .htaccessa. Za ovu opciju također je potreban mod_rewrite, te je poželjno da provjerite sa vašim hostingom da li je ova opcija omogućena.

RewriteEngine on
RewriteCond %{HTTP_REFERER} nekadomena\.hr [NC]
RewriteRule .* – [F]

Ovaj kod govori Apache serveru da blokira sav promet koji dolazi sa nekadomena.hr

Dodavanje više referrera u .htaccess možete učiniti na ovaj način:

RewriteEngine on
RewriteCond %{HTTP_REFERER} nekadomena\.hr [NC,OR]
RewriteCond %{HTTP_REFERER} drugadomena\.com
RewriteRule .* – [F]

Sav promet sa nekadomena.hr i drugadomena.com će na ovaj način biti blokiran. Ukoliko želite dodati još domena potrebno je iz svake, osim zadnje dodati [NC, OR]

Svi blokirani posjetitelji će dobiti 403 poruku, čiji sadržaj možete podesiti na način koji je već opisan u ovom članku.

Ovo su samo nekoliko mogućnosti koje .htaccess pruža a koje sam i sam koristio. Ukoliko želite znati više kopajte malo po internetu, a za početak mogu biti korisne i ove stranice: