WordPress savet: Šta sve može vaš .htaccess
Kada je nastao, zajedno sa prvim web serverima, svrha .htaccess fajla bila je, kao što mu i ime kaže, da kontroliše pristup direktorijumima i fajlovima. Danas, njegova primena je šira, i služi da se uz pomoć njega konfiguriše mnoštvo parametara servera, u okviru direktorijuma u kome se nalazi, i pod direktorijuma koji postoje. Po defaultu, WordPress ga koristi da bi generisao SEO friendly URL-ove u okviru sistema, ali postoje još neke stvari koje biste mogli uraditi uz pomoć .htaccess, a koje vam mogu biti interesantne.
Neke od ovih stvari, možda, vaš web server već radi po default-u, pa nemate potrebe za dodatnim podešavanjima, ali ako to nije slučaj, evo kako to možete uraditi.
- Onemogućite pregled sadržaja direktorijuma. Primetili ste sigurno nekad da ako upišete putanju do nekog direktorijuma, u svom web browseru dobijete spisak svih fajlova koji se tamo nalaze. Iako se ne može videti sadržaj sistemskih biblioteka, nije dobro da ovakav spisak bude dostupan svima. Da to onemogućite, u .htaccess dodajte:
Options -Indexes
- Onemogućite izvršavanje PHP koda u direktorijumima gde to nije potrebno. Recimo, direktorijum /wp-content/uploads/ često biva meta napada i u njemu se postavljaju maliciozni .php fajlovi, koji ako se izvrše, mogu inficirati celu WordPress instalaciju. Kako se ovaj direktorijum koristi za upload fajlova i slika, i nema drugu svrhu, kreirajte prazan .htaccess fajl, u njega upišite sledeći kod, a zatim ga postavite u taj direktorijum.
<Files *.php>
deny from all
</Files>
- Onemogući neovlašćen pristup .htaccess fajlu. Na ovaj način limitirate pristup drugima, ali vi i dalje možete pristupiti kroz FTP, ili hosting panel.
<files ~ "^.*.([Hh][Tt][Aa])">
order allow,deny
deny from all
satisfy all
</files>
- Onemogući neovlašćen pristup wp-config.php fajlu. Isto kao i iznad, limitirate pristup fajlu u kome su najvažniji parametri za pristup vašem WordPress-u.
<files wp-config.php>
order allow,deny
deny from all
</files>
- Onemogući pristup određenim fajlovima u /wp-content/ direktorijumu. Potrebno je postaviti u novi .htaccess koji se nalazi u samom folderu, a cilj je da se onemogući pristup sistemskim datotekama, a da se statičkim fajlovima, slikama, CSS i JS fajlovima može neometano pristupati.
Order deny,allow
Deny from all
<Files ~ ".(xml|css|jpe?g|png|gif|js)$">
Allow from all
</Files>
- Omogućite pristup Admin panelu samo sa određenih IP-adresa. Postavlja se u zasebni .htaccess fajl koji se nalazi u /wp-admin/ direktorijum, a omogućava da limitirate pristup admin panelu samo sa određenih IP-adresa.
AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName "WordPress Admin Access Control"
AuthType Basic
<LIMIT GET>
order deny,allow
deny from all
# whitelist Home IP address
allow from xx.xx.xx.xxx
# whitelist Work IP address
allow from xx.xx.xx.xxx
</LIMIT>
- Uradite trajni redirekt za izmenjene ili nove URL-ove. Ako ste recimo promenili ime kategorije, taga, ili ste neke stvari ispremeštali, uradite 301 redirekciju.
Redirect 301 /oldurl/ https://www.example.com/newurl
Redirect 301 /category/television/ https://www.example.com/category/tv/
- Zabranite hot-linkovanje slika. Ako ste primetili da ljudi kradu vaše fotografije, postavljaju ih direktno kod sebe na sajt i time vam iskorištavaju resurse, to možete lako blokirati. Potrebno je da u kodu izmenite ime svog domena, i putanju do slike koju želite da im se prikazuje umesto originalne.
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^https://(.+.)?vasdomen.com/ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule .*.(jpe?g|gif|bmp|png)$ https://vasdomen.com/images/stolen.jpg
- Recite browseru vašeg korisnika koliko da kešira koje fajlove. Keširanje fajlova u okviru browsera značajno ubrzava učitavanje sajta svaki naredni put nakon prvog. Mnogi od velikih fajlova se na sajtovima vrlo retko menjaju (logo, CSS fajlovi, pozadina i sl.)
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType text/html "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 1 month"
</IfModule>
- Obezbedite /wp-includes/. Fajlovima u ovom direktorijumu korisnici ne pristupaju, već se oni uvek pozivaju iz drugih fajlova. Stoga je dobro zabraniti spoljni pristup.
# Block the include-only files.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^wp-admin/includes/ - [F,L]
RewriteRule !^wp-includes/ - [S=3]
RewriteRule ^wp-includes/[^/]+.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
</IfModule>
Pogledajte i preporuke iz zvanične WordPress dokumentacije – Hardening WordPress.
[…] Preko .htaccessa možemo i onemogućiti pristup našem wp-config.php fajlu gde nam se nalaze kredencijali za mysql bazu. Detaljnije o moćima .htaccess-a možete pročitati u blogpostu kolega iz mCloud-a. […]
hvala na dobrim savetima sve pohvale za mcloud