Kako da sprečite WordPress da izmeni sadržaj .htaccess fajla
.htaccess (HyperText Access) je konfiguracioni tekstualni fajl koji se koristi na web serverima koji podržavaju Apache HTTP Server. U pitanju je fajl koji omogućava definisanje specifičnih direktiva i pravila za konfiguraciju servera za određeni folder ili web resurs.
Kada web server prima zahtev za određeni resurs (npr. HTML stranicu, sliku ili skriptu), on će proveriti postoji li .htaccess fajl u direktorijumu tog resursa ili bilo kojem parent folderu na toj putanji. Ako postoji, server će primeniti pravila definisana u tom fajlu.
Dakle, u pitanju je izuzetno važan konfiguracioni fajl, koji po potrebi možete i sami menjati, na primer da biste ubrzali ili unapredili rad vašeg web sajta/web servera. Iako i sam WordPress, (ali i neki plugini) mogu da upisuju u .htaccess fajl, želećete da on ostane što više zaštićen od bilo kakvih izmena koje nisu neophodne.
Zato ćemo u ovom tekstu objasniti kako da sprečite WordPress da izmeni .htaccess fajl.
Kada WordPress menja .htaccess fajl?
Kako smo videli, .htaccess fajl je važan konfiguracioni fajl u kojem se čuvaju važne postavke vašeg WordPress web sajta/web servera. On sadrži pravila koja daju instrukcije vašem web serveru kako da obradi vaš web sajt.
WordPress koristi .htaccess fajl za čuvanje svojih postavki permalink strukture. Svaki put kada promenite ili regenerišete permalinkove, WordPress će automatski obrisati stare postavke u .htaccess fajlu i ažurirati novim postavkama.
Takođe i neki WordPress plugini čuvaju svoje postavke u .htaccess fajlu. Na primer, plugin W3 Total Cache će izmeniti vaš .htaccess fajl kako bi konfigurisao alate za keširanje i optimizaciju koji su deo plugina.
Na kraju, možete napraviti i sopstvene prilagođene promene u .htaccess fajlu kako biste kontrolisali rad vašeg web sajta. Na primer, možete dodati prilagođena pravila koja štite vašu admin stranu, čuvaju vaš web sajt od hakera, podešavaju preusmeravanja, zabranjuju sumnjive IP adrese i još mnogo toga.
S pravom možete biti zabrinuti da će, ukoliko dodate sopstvena pravila u .htaccess fajl, ona u nekom momentu biti obrisana kada WordPress prepiše fajl novim postavkama.
Zato hajde da vidimo kako da sprečite WordPress da izmeni vaša pravila u .htaccess fajlu.
Kako da sprečite WordPress da izmeni vaša pravila u .htaccess fajlu
Dobra vest je da ako razumete kako .htaccess fajl funkcioniše, možete biti sigurni da vaša prilagođena pravila neće biti obrisana.
To je zato što su oblasti fajla koje će biti promenjene od strane WordPressa ili vaših plugina jasno markirane. Jednostavno se pobrinite da ne dodajete kod u te oblasti.
Ne menjajte kod unutar WordPress markera
Kao što smo ranije naveli, WordPress koristi .htaccess fajl za čuvanje postavki vezanih za URL strukturu koja je optimizovana za search engine. Kod koji WordPress čuva u fajlu će biti automatski obrisan i ažuriran svaki put kada promenite postavke permalinka.
Kao što možete videti na donjoj slici, WordPress čuva ove informacije između dva markera, # BEGIN WordPress i # END WordPress.
Obratite pažnju na upozorenje unutar tih markera.
Direktive (linije) između BEGIN WordPress i END WordPress su dinamički generisane i treba ih menjati samo putem WordPress filtera. Sve promene u direktivama između ovih markera će biti obrisane.
To znači da WordPress neće obrisati niti menjati bilo koji kod koji dodate izvan ovih oznaka. Korisnici obično dodaju svoj prilagođeni kod na vrh fajla, iznad oznake # BEGIN WordPress.
Napomena: .htaccess je skriveni fajl koji se nalazi u root folderu vašeg WordPress web sajta. Pročitajte u ovom tekstu kako da ga učinite vidljivim za potrebe editovanja.
Ne menjajte kod unutar markera vaših plugina
Kada plugin sačuva svoje postavke u .htaccess fajl, takođe ih smešta između markera koje izgledaju kao # BEGIN Plugin i # END Plugin.
Na primer, ako instalirate i podesite plugin W3 Total Cache za poboljšanje brzine i performansi vašeg web sajta, on će dodati pravila u .htaccess fajl između oznaka # BEGIN W3TC Browser Cache i # END W3TC Browser Cache.
Ova pravila će biti obrisana svaki put kada promenite postavke plugina, tako da je važno da budete oprezni da ne dodate svoja prilagođena pravila između tih markera.
Kreiranje markera za vaš prilagođeni kod
U retkim slučajevima, loše napisan plugin može izmeniti kod izvan svojih oznaka # BEGIN i # END. Međutim, obično neće menjati kod koji se nalazi između oznaka koje koristi WordPress ili drugi plugini.
Ako se brinete da loše napisan plugin može obrisati vaš prilagođeni kod, možete dodati svoje oznake u .htaccess fajl.
Na primer, možete uneti markere # BEGIN MyCustomCode i # END MyCustomCode (ili isto to na srpskom) na vrh .htaccess fajla, a zatim dodati svoja prilagođena pravila između tih markera.
Ako takođe želite da dodate kod na kraj .htaccess fajla, možete dodati drugi set markera tamo. Samo se pobrinite da im date različita imena. Na primer, možete koristiti MyCustomCodeTop i MyCustomCodeBottom, odnosno ekvivalent toga na srpskom jeziku, ako vam je tako lakše.
Kako sprečiti WordPress da izmeni .htaccess fajl
Sada kada razumete kako ovaj fajl radi, možete biti sigurni da vaš prilagođeni kod neće biti obrisan od strane WordPressa ili plugina.
Međutim, neki napredni korisnici i developeri žele da spreče WordPress da pravi bilo kakve promene u .htaccess fajlu.
Na primer, možda želite da ručno unesete podešavanja za permalink-ove i izbegnete konflikte tako što će sprečiti WordPress da čuva svoje postavke permalink-ova u fajlu.
Ne preporučujemo to osim ako znate šta radite, jer to može dovesti do neočekivanih posledica. Međutim, to se može postići promenom dozvola fajla ili korišćenjem koda.
Kako da pomoću dozvola fajla sprečite WordPress da menja .htaccess fajl
Jedan način da sprečite WordPress da izmeni fajl je da ga postavite kao read-only. Da biste to uradili, potrebno je da promenite dozvole fajla.
.htaccess fajl ćete pronaći u root folderu instalacije vašeg WordPress web sajta. Kliknite desnim klikom na njega i odaberite opciju Change permissions.
Sada će vam se prikazati pop-up prozor u kojem možete promeniti atribute fajla.
Podrazumevana postavka će biti 644, ali to možete promeniti na 444 tako što ćete direktno kucati u polje Permission ili podesiti da su čekirani samo box-ovi pored polja Read.
Kada kliknete na dugme Change Permissions fajl će postati samo za čitanje i neće biti moguće izmeniti ga.
Naravno, to znači da nećete moći ni da pišete u fajl. Kada želite da napravite promene, privremeno morate vratiti dozvole fajla na 644.
Kako da pomoću koda sprečite WordPress da menja .htaccess
Još jedno rešenje je da koristite deo koda koji daje instrukciju WordPress-u da ne treba da upisuje u .htaccess fajl. Ovo je korisno ako želite da sprečite WordPress da menja .htaccess fajl, a da pritom ne blokirate vaše plugine.
Napomena: Uređivanje bilo kojeg osnovnog WordPress fajla može biti opasno. Čak i mala greška može izazvati ozbiljne probleme na vašem sajtu. Zato ovu metodu preporučujemo samo naprednim korisnicima.
Jednostavno dodajte sledeći deo koda na kraju vašeg wp-config.php fajla.
add_filter('got_rewrite', '__return_false');
Kada to uradite, WordPress više neće pisati u .htaccess fajl.
Ako pokušate da promenite postavke permalinkova kada je fajl postavljen kao read-only, pojaviće se poruka o grešci.
Na vrhu stranice Settings → Permalinks, videćete poruku You should update your .htaccess file now.
Ovo vam pokazuje da WordPress nije mogao da izmeni .htaccess fajl.
Obično je to ono što ste želeli. Međutim, ako želite da dodate WordPress postavke permalinkova u .htaccess, onda ćete to morati uraditi ručno.
Na dnu stranice Settings → Permalinks, videćete još jednu poruku o grešci koja kaže da vaš .htaccess fajl nije za pisanje. Ispod toga, videćete pravila koja treba dodati u .htaccess.
Ako želite da dodate te postavke, moraćete privremeno promeniti dozvole nazad na 644 kako biste mogli da uređujete ova fajl. Nakon toga, trebate nalepiti pravila između WordPress BEGIN i END markera u fajlu, zamenjujući već postojeći kod.
Kada završite, jednostavno vratite vrednost nazad na 444 i sačuvajte fajl. Ponovo će biti read-only.
Nenad Mihajlović