Kako da popravite .htaccess fajl
.htaccess fajl je jedan od najvažnijih fajlova na web serveru koji hostuje vaš web sajt. U pitanju je fajl koji sadrži set instrukcija koje upravljaju radom vašeg web servera, a putem njega možete da upravljate stvarima kao što su permalinkovi ili da defiinišete određena sigurnosna pravila za vaš web server.
Iako je u pitanju koristan fajl, postoje situacije kada on može da prouzrokuje probleme u radu vašeg sajta, poput neispravnih linkova ili takozvanog belog ekrana smrti (white screen of death). Ne sam fajl, nego pravila u njemu koja mogu da dovedu do takvih ili sličnih problema.
Zato ćemo mi u ovom tekstu objasniti kako da popravite neke od najčešćih problema sa vašim .htaccess fajlom.
Hajde da prvo vidimo šta .htaccess fajl.
Šta je .htaccess fajl?
.htaccess fajl je skriveni konfiguracioni fajl na vašem web serveru, koji sadrži set instrukcija za Apache web server – softver koji u najvećem broju slučajeva pokreće web servere.
Jedna od važnijih funkcija .htaccess fajla jeste kreiranje user-friendly URL-ova za vaše stranice ili blog postove. U pitanju su one razumljive i čitljive URL adrese koje možete da vidite u address baru svog browser-a kada kliknete na neki takav link.
Pored toga, .htaccess fajl možete da koristite da podesite sigurnosne mere poput zaštite password-om određenih direktorijuma, ili da blokirate pristup određenim IP adresama koje želite da onemogućite da pristupe vašem web sajtu.
Ovo su samo neki primeri primene .htaccess fajla. Za detaljnije upoznavanje sa ovim fajlom i načinima na koje možete da ga upotrebite, predlažemo da pročitate Kako podesiti 301 trajnu redirekciju u .htaccess fajlu i cPanel-u ili Kako da sprečite WordPress da izmeni sadržaj .htaccess fajla.
Ukoliko želite detaljnije savete o tome kako da pomoću ovog fajla generalno poboljšate rad svog web sajta, predlažemo da pročitate Kako da pomoću .htaccess fajla unapredite rad svog web sajta.
Sada kada ste se upoznali sa .htaccess fajlom, vreme je da vidimo kako da prepoznate da vaš .htaccess fajl ima problem.
Kako da prepoznate da vaš .htaccess fajl ima problem?
.htaccess može da ima problem iz nekoliko razloga. To može biti zbog konflikta između plugin-a i WordPress-a, odnosno između plug-a i WordPress teme. Takođe, problem može da nastane tako što ste slučajno izmenili sadržaj .htaccess fajla.
Koji god da je razlog, on će pokazati neke simptome na vašem web sajtu. Neki od tih simptoma mogu da budu:
- prekinuti linkovi – manifestuje se tako što klikom na link korisnik ne bude usmeren nigde, ili samo vidi poruku da postoji problem sa linkom.
- beli ekran smrti (white screen of death) – umesto sadržaja vašeg sajta, posetilac vidi samo beli ekran, bez ikakvog sadržaja.
- plugini ne rade ispravno – neki plugini se oslanjaju na specifične instrukcije u .htaccess fajlu da bi ispravno funkcionisali. Ukoliko postoji greška u .htaccess fajlu, plugini neće raditi kako je očekivano.
Hajde sada da vidimo kako sve možete da pristupite .htaccess fajlu da biste ga popravili.
Kako da pristupite .htaccess fajlu?
.htaccess fajl se nalazi u root direktorijumu vašeg web sajta. Možete mu pristupiti putem vašeg cPanel naloga ili putem FTP/SFTP klijenta. Pristup je manje više isti, samo je razlika u alatu sa kojim to radite.
Mi ćemo u ovom tekstu da koristimo ovaj prvi pristup – putem cPanel naloga.
Pored ovog, postoji i alternativni način da pristupite svom .htaccess fajlu. U pitanju je pristup putem plugin-a.
Ukoliko niste spremni da samostalno locirate i editujete svoj .htaccess fajl, objasnićemo kasnije kako to da uradite pomoću plugin-a.
Hajde da vidimo prvo kako da pristupite putem cPanel naloga.
Kako da pristupite .htaccess fajlu preko cPanel naloga?
Ulogujte se na svoj cPanel nalog i pronađite sekciju pod nazivom Files.
Sada kliknite na ikonicu File Manager.
Otvoriće vam se prozor kao na slici ispod.
Sada u stablu foldera sa leve strane pronađite folder pod nazivom public_html. To je root folder (direktorijum) vašeg web sajta.
Klikom na public_html otvoriće vam se u desnom prozoru sadržaj tog foldera.
Ukoliko ste ranije radili sa .htaccess fajlom na vašem sajtu, onda ćete ga videti u desnom prozoru.
Podrazumevano ovaj fajl je skriven, pa ako ga do sada niste editovali, onda morate prvo da ga učinite vidljivim.
Podesite da .htaccess fajl bude vidljiv
Da biste podesili da .htaccess postane vidljiv, kliknite na Settings u gornjem desnom uglu prozora. Otvoriće vam se prozor Preferences. Samo čekirajte opciju Show hidden files i kliknite na Ok. Sada će .htaccess fajl postati vidljiv na lokaciji public_html.
Editovanje .htaccess fajla
Sada kada možete da vidite .htaccess fajl, možete i da ga editujete. Editovanje je prilično lako. Dovoljno je da kliknete desnim tasterom miša na ovaj fajl i otvoriće vam se meni iz kog treba da izaberete opciju Edit.
Klikom na dugme Edit otvoriće vam se editor .htaccess fajla.
Sada možete da menjate šta god je potrebno u fajlu.
Primeri najčešćih grešaka koje se mogu pojaviti u .htaccess fajlu
Greška u sintaksi
Greške u sintaksi mogu nastati zbog nepravilne upotrebe simbola ili karaktera u .htaccess fajlu. U slučaju RewriteRule
, početna kosa crta (/
) može izazvati problem jer se pravilo odnosi na relativne putanje unutar URL-a.
RewriteEngine On
RewriteRule ^/stara-stranica$ /nova-stranica [R=301,L]
Ova linija sadrži grešku jer je kosa crta (/) ispred stara-stranica
nepotrebna i može uzrokovati da pravilo ne funkcioniše kako treba.
Rešenje:
RewriteEngine On
RewriteRule ^stara-stranica$ /nova-stranica [R=301,L]
Ispravljanje greške uklanjanjem kose crte na početku pravila omogućava pravilno preusmeravanje stara-stranica
na nova-stranica
.
Beskonačna petlja preusmeravanja
Beskonačne petlje preusmeravanja nastaju kada dva ili više pravila uzajamno preusmeravaju jedan URL na drugi bez izlaza iz petlje. Ovo može uzrokovati da browser stalno preusmerava korisnika između URL-ova dok se ne dostigne limit preusmeravanja, što dovodi do greške.
RewriteEngine On
RewriteCond %{HTTP_HOST} ^nekisajt\.rs [NC]
RewriteRule ^(.*)$ http://www.nekisajt.rs/$1 [L,R=301]
RewriteCond %{HTTP_HOST} ^www\.nekisajt\.rs [NC]
RewriteRule ^(.*)$ http://nekisajt.rs/$1 [L,R=301]
U ovom primeru, prvo pravilo preusmerava nekisajt.rs
na www.nekisajt.rs
, dok drugo pravilo preusmerava www.nekisajt.rs
nazad na nekisajt.rs
. Ovo stvara beskonačnu petlju.
Rešenje:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^nekisajt\.rs [NC]
RewriteRule ^(.*)$ http://www.nekisajt.rs/$1 [L,R=301]
# Ili samo jedno preusmeravanje
# RewriteCond %{HTTP_HOST} ^www\.nekisajt\.rs [NC]
# RewriteRule ^(.*)$ http://nekisajt.rs/$1 [L,R=301]
Održavanjem samo jednog pravila preusmeravanja izbegava se beskonačna petlja. Prvo pravilo preusmerava sve zahteve za nekisajt.rs
na www.nekisajt.rs
.
Nepravilna početna stranica
DirectoryIndex
direktiva definiše koja datoteka će biti prikazana kao početna stranica. Ako datoteke navedene u DirectoryIndex direktivi
ne postoje u direktorijumu, server može vratiti grešku 403 Forbidden.
DirectoryIndex index.html index.htm index.php
Ako u direktorijumu nemate index.html
ili index.htm
, server može vratiti grešku 403, čak i ako imate index.php
datoteku.
Korisno: Ukoliko niste uspoznati sa kodovima HTTP grešaka, predlažemo da pročitate naš tekst Najčešće HTTP greške – sve na jednom mestu.
Rešenje:
DirectoryIndex index.php index.html index.htm
Promenom redosleda u DirectoryIndex
, server prvo traži index.php
kao početnu stranicu. Ako index.php
nije prisutan, server će tražiti index.html
, a zatim index.htm
.
Blokiranje pristupa fajlovima
Pogrešno konfigurisane direktive za blokiranje pristupa fajlovima mogu dovesti do toga da legitimni korisnici ne mogu pristupiti važnim fajlovima na sajtu, ili da osetljivi fajlovi ostanu dostupni neovlašćenim korisnicima.
<Files "config.php">
Order Deny,Allow
Deny from all
Allow from 123.123.123.123
</Files>
Ova konfiguracija može biti problematična jer koristi zastareli redosled Order Deny,Allow
koji može biti pogrešno protumačen od strane novijih verzija Apache servera. Takođe, može dopustiti pristup sa neovlašćenih IP adresa.
Rešenje:
<Files "config.php">
Require all denied
Require ip 123.123.123.123
</Files>
Nova sintaksa koristi direktivu Require
koja je uvedena u novijim verzijama Apache servera.
– Require all denied
blokira pristup svim korisnicima.
– Require ip 123.123.123.123
dozvoljava pristup samo korisnicima sa specifične IP adrese.
Nepravilna RewriteBase
direktiva
Direktiva RewriteBase
postavlja osnovnu URL putanju za RewriteRule
direktive. Ako je ova direktiva postavljena pogrešno, može dovesti do nepravilnog preusmeravanja URL-ova ili problema sa učitavanjem resursa na sajtu. Ovo se često dešava kada se sajt premesti u poddirektorijum ili se menjaju strukture URL-ova.
RewriteEngine On
RewriteBase /poddirektorijum
RewriteRule ^stara-stranica$ nova-stranica [R=301,L]
U ovom primeru, RewriteBase
je postavljena na /poddirektorijum
, ali RewriteRule
koristi relativne putanje bez uzimanja u obzir osnovnu putanju. Ako fajlovi nisu u navedenom poddirektorijumu ili ako RewriteBase
nije pravilno postavljena, pravilo neće funkcionisati ispravno.
Rešenje:
RewriteEngine On
RewriteBase /
RewriteRule ^poddirektorijum/stara-stranica$ poddirektorijum/nova stranica [R=301,L]
Objašnjenje:
Postavljanjem RewriteBase
na koren direktorijuma (/
) osigurava se da pravila preusmeravanja funkcionišu ispravno.
Korišćenje apsolutne putanje u RewriteRule
direktivi omogućava pravilno preusmeravanje URL-ova iz podirektorijuma poddirektorijum
.
Pogrešno korišćenje direktive Options
Pogrešno korišćenje Options
direktive može dovesti do neispravnog ponašanja sajta, uključujući probleme sa prikazivanjem sadržaja i funkcionalnostima koje zavise od određenih opcija servera.
Options
direktiva u .htaccess fajlu definiše različite opcije za direktorijume na serveru, kao što su omogućavanje ili onemogućavanje listanja direktorijuma (Indexes
), korišćenje simboličkih linkova (FollowSymLinks
), itd.
Pogrešna ili kontradiktorna upotreba ove direktive može dovesti do konflikta i problema sa funkcionisanjem sajta.
Options +Indexes
Options -Indexes
Ovaj primer prikazuje dve Options
direktive koje se međusobno isključuju. Prva linija omogućava listanje direktorijuma, dok druga linija odmah zatim onemogućava listanje direktorijuma. Ovakva kontradiktorna upotreba može zbuniti server i dovesti do neispravnog ponašanja sajta.
Rešenje:
Options -Indexes
Da biste izbegli konflikte i osigurali ispravno funkcionisanje sajta, koristite samo jednu Options
direktivu sa jasnom i odgovarajućom vrednošću. U ovom primeru, Options -Indexes
onemogućava listanje direktorijuma, što može povećati sigurnost sajta i sprečiti neovlašćeni pristup datotekama unutar direktorijuma.
Kako da pristupite .htaccess fajlu pomoću plugin-a
Ukoliko iz bilo kog razloga ne možete da pristupite svom cPanel nalogu ili ne želite da sami pristupate fajlovima unutar root foldera vašeg sajta, .htaccess fajlu možete da pristupite i pomoću plugin-a.
Jedan od najpopularnijih plugin-a koji između ostalog može da posluži za editovanje .htaccess fajla jeste All In One SEO (AIOSEO). Ovaj odličan plugin smo već predstavili u nekoliko tekstova na našem blogu, pa preporučujemo da ih svakako pročitate pre nego što počnete sa korišćenjem ovog sjajnog plugin-a.
Ukoliko još uvek ne koristite ovaj plugin, možete da ga preuzmete i aktivirate iz WordPress repozitorijuma plugina.
Nakon aktivacije, u admin dashboard-u svog WordPress sajta pronađite opciju All in One SEO → Tools, a zatim prebacite na tab .htaccess Editor.
Otvoriće vam se prozor sa sadržajem .htaccess fajla, gde sada možete da editujete sve što želite unutar fajla. Nakon što završite sa editovanje, kliknite na dugme Save Changes kako biste sačuvali sve izmene.
Time ste ujedno završili editovanje svog .htaccess fajla.
Zaključak
Kao što ste videli, greške u .htaccess fajlu mogu dovesti do ozbiljnih problema, poput neispravnih linkova ili belog ekrana. Zato je razumevanje i pravilno korišćenje .htaccess fajla od suštinske važnosti za funkcionisanje vašeg sajta.
Ako želite detaljnije savete o tome kako da pomoću ovog fajla unapredite rad svog sajta, predlažemo da pročitate i preostale tekstove na ovu temu, koje smo već naveli u tekstu.
Nenad Mihajlović