File .htaccess merupakan file konfigurasi server Apache yang didistribusikan, di mana Anda dapat memberikan perintah ke server bagaimana cara melayani situs web Anda. File .htaccess untuk WordPress dapat digunakan untuk berbagai jenis konfigurasi, seperti pengaturan keamanan, perlindungan direktori, permalink yang cantik, mengarahkan ulang dan menulis ulang URL, dan lain sebagainya. File .htaccess utama dapat ditemukan di direktori root, di dalam folder public_html pada server. Namun, .htaccess dapat juga dibuat di dalam direktori lain, misalnya, menambahkan .htaccess ke folder wp-admin yang merupakan solusi keamanan umum yang digunakan oleh plugin keamanan populer seperti BulletProof Security.
.htaccess untuk WordPress default
Setiap menginstal WordPress dilengkapi dengan file .htaccess default yang dapat Anda temukan di direktori root. File ini dihasilkan saat Anda mengaktifkan Pretty Permalinks untuk situs WordPress Anda. Default .htaccess terlihat seperti ini:
# BEGIN WordPress <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule> # END WordPress
Jika Anda melakukan kesalahan dalam mengostumisasi file .htaccess, Anda dapat kembali ke versi default tersebut kapan saja. Garis yang dimulai dengan # adalah komentar kode. Jangan menambahkan apa pun antara komentar # BEGIN WordPress dan # END WordPress, karena inti WordPress dapat menimpa bagian ini. Anda dapat menambahkan aturan .htaccess di bawah aturan default, setelah # END WordPress. Sebelum Anda membuat perubahan apa pun, selalu buat cadangan .htaccess saat ini dengan membuat salinannya dan mengunduhnya ke komputer Anda.
Men-disable Directory Browsing
Secara default, penjelajahan direktori diaktifkan di WordPress. Ini berarti siapa pun di internet dapat melihat daftar isi dari folder Anda dan dengan mudah menemukan kerentanan di instalasi WordPress Anda. Anda dapat menonaktifkan fitur penjelajahan direktori dengan menambahkan aturan berikut ke file .htaccess Anda:
Options -Indexes
Memblokir alamat IP yang tidak diinginkan
Dengan .htaccess, Anda dapat dengan mudah memblokir semua alamat IP yang tidak ingin Anda berikan akses ke situs Anda. Cukup tambahkan alamat IP ke Deny dari aturan, satu IP setiap baris:
Order allow,deny Deny from 123.123.12.12 Deny from 234.234.23.23 Allow from all
Melindungi semua file yang rentan
Menyimpan error log dan file konfigurasi yang dilindungi merupakan tugas keamanan penting karena berisi data yang rentan seperti nama pengguna dan kata sandi database Anda. Meskipun kita dapat melindungi file konfigurasi yang berbeda seperti .htaccess atau wp-config.php satu demi satu, lebih mudah untuk menggunakan aturan kumulatif berikut. Ini melindungi file yang paling rentan di instalasi WordPress dari akses yang tidak sah.
<FilesMatch "^.*(error_log|wp-config\.php|php.ini|\.[hH][tT][aApP].*)$"> Order deny,allow Deny from all </FilesMatch>
Mencegah akses ke folder wp-include
Folder wp-includes berisi file inti WP yang penting. Faktanya, file ini tidak perlu diakses oleh siapapun. namun folder ini dapat ditargetkan oleh orang yang tidak diinginkan. Oleh karena itu, untuk praktik keamanan yang baik, sebaiknya menonaktifkan akses ke direktori ini dengan menambahkan aturan berikut ke file .htaccess Anda:
<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>
Mengeset 301 Redirect
301 redirects merupakan pengalihan permanen yang dapat meneruskan pengunjung dari satu URL ke URL lainnya. Ini merupakan cara yang disarankan, SEO-friendly untuk menulis ulang URL setiap kali Anda menempatkan konten ke lokasi baru. Anda dapat mengelola 301 pengalihan dalam file .htaccess. Anda hanya perlu menambahkannyasatu per satu.
pada / urllama1 / dan / urllama2 /, cukup tambahkan slug post. Untuk URL baru, selalu sertakan URL lengkap, termasuk protokol http:// atau https://.
Redirect 301 /urllama1/ https://www.websiteanda.com/urlbaru1/ Redirect 301 /urllama2/ https://www.websiteanda.com/urlbaru2/
Membatasi akses langsung ke file php
Ini juga merupakan praktik keamanan yang baik untuk memblokir akses langsung ke file PHP di folder theme dan plugin di dalam direktori wp-content. Dengan cara ini, Anda dapat mencegah peretas menyuntikkan kode berbahaya ke file PHP Anda.
RewriteCond %{REQUEST_URI} !^/wp-content/plugins/file/to/exclude\.php RewriteCond %{REQUEST_URI} !^/wp-content/plugins/directory/to/exclude/ RewriteRule wp-content/plugins/(.*\.php)$ - [R=404,L] RewriteCond %{REQUEST_URI} !^/wp-content/themes/file/to/exclude\.php RewriteCond %{REQUEST_URI} !^/wp-content/themes/directory/to/exclude/ RewriteRule wp-content/themes/(.*\.php)$ - [R=404,L]
Menghapus dukungan untuk XML-RPC
Antarmuka XML-RPC memberikan akses ke aplikasi pihak ketiga, seperti Jetpack ke situs Anda sehingga dapat memposting konten atau melakukan tindakan yang berbeda di dalamnya. XML-RPC diaktifkan pada setiap situs WordPress secara default. Namun, itu dapat dengan mudah dimanfaatkan oleh orang yang tidak diinginkan, jadi jika Anda tidak ingin menggunakan aplikasi pihak ketiga di situs Anda, lebih baik menonaktifkannya. Jika mau, Anda dapat menambahkan alamat IP tertentu sebagai pengecualian untuk aturan tersebut.
<FilesMatch "^(xmlrpc\.php)"> Order deny,allow Allow from 123.123.12.12 Allow from 234.234.23.23 Deny from all </FilesMatch>
Mengaktifkan browser caching
Anda dapat mempercepat situs Anda dengan mengaktifkan cache browser di server sehingga browser pengguna tidak perlu mengunduh file statis seperti gambar dan skrip sepanjang waktu. Cuplikan .htaccess di bawah ini berisi kerangka waktu caching browser yang disarankan untuk WordPress:
<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 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 2 days" </IfModule>
Pelajari lebih lanjut Tips Mempercepat Loading Website WordPress.
Mencegah suntikan malicious script
Peretas sering menargetkan variabel GLOBAL dan _REQUEST di situs WordPress. Mereka mencoba mengubah variabel-variabel ini sehingga mereka dapat menginfeksi situs dengan kode berbahaya. Aturan .htaccess berikut membuat server Anda menolak perubahan ini:
Options +FollowSymLinks RewriteEngine On RewriteCond %{QUERY_STRING} (<|%3C).*script.*(>|%3E) [NC,OR] RewriteCond %{QUERY_STRING} GLOBALS(=|[|%[0-9A-Z]{0,2}) [OR] RewriteCond %{QUERY_STRING} _REQUEST(=|[|%[0-9A-Z]{0,2}) RewriteRule ^(.*)$ index.php [F,L]
Melindungi folder wp-content
Folder wp-content yang berisi plugin, theme, upload gambar, beberapa cadangan, dan konten penting lainnya. Selain file statis, seperti gambar, CSS, dan JavaScript, tidak ada alasan untuk memberikan akses kepada orang lain ke direktori wp-content. Anda perlu membuat file .htaccess terpisah untuk cuplikan kode ini dan menempatkannya ke dalam folder wp-content Anda. Anda cukup menambahkan semua jenis file yang Anda inginkan agar dapat diakses oleh pengguna:
Order deny,allow Deny from all <Files ~ ".(xml|css|js|jpe?g|png|gif|pdf|docx|zip|rar)$"> Allow from all </Files>
Mencegah hotlinking gambar
Hotlinking gambar terjadi ketika situs web lain menampilkan gambar Anda dengan menautkan ke URL mereka di situs Anda. Lalu lintas ekstra ini meningkatkan bandwidth Anda dan dapat memperlambat situs Anda secara signifikan. Anda dapat dengan mudah mencegah hotlink gambar dalam file .htaccess. Cuplikan kode berikut memberikan akses ke gambar Anda hanya untuk URL Anda sendiri dan Google:
RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yoursite1.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?yoursite2.com [NC] RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?google.com [NC] RewriteRule \.(jpg|jpeg|png|gif)$ – [NC,F,L]
Mencegah enumerasi nama pengguna
WordPress menggunakan struktur URL khusus untuk halaman penulis yang menampilkan semua artikel milik penulis yang sama. Setiap penulis memiliki nomor ID mulai dari author = 1. Misalnya, jika pengguna memasukkan http://www.websiteanda.com/?author=1 ke bilah URL, browser memuat halaman penulis yang menampilkan semua posting penulis bersama dengan nama pengguna. Dengan teknik yang sama, mudah untuk mengetahui nama pengguna dari setiap penulis. Namun, Anda dapat mencegah enumerasi nama pengguna dengan menambahkan aturan berikut ke file .htaccess Anda:
RewriteEngine on RewriteBase / RewriteCond %{QUERY_STRING} author=d RewriteRule ^ /? [L,R=301]
Menambahkan custom error pages
Meskipun WordPress dilengkapi dengan error pages default, Anda juga dapat membuat custom error pages melalui file htacces. Anda perlu membuat error pages dalam HTML atau PHP dan mengunggahnya ke folder root Anda (public_html pada server). Anda dapat menggunakan error pages yang sama untuk setiap kode status kesalahan atau membuat satu persatu secara terpisah.
ErrorDocument 404 /error404.html ErrorDocument 403 /error403.html ErrorDocument 500 /error500.html ErrorDocument 501 /error501.html
Memproteksi wp-admin
Jika Anda dan semua admin memiliki IP statis, Anda dapat melindungi area admin WordPress Anda dengan menambahkan aturan berikut ke .htaccess Anda. Cuplikan kode di bawah ini hanya memberikan akses ke alamat IP yang Anda daftarkan satu per satu pada allow dari aturan yang diberikan.
AuthUserFile /dev/null AuthGroupFile /dev/null AuthName "WordPress Admin Access Control" AuthType Basic <LIMIT GET> Order deny,allow Deny from all Allow from 123.123.12.12 Allow from 234.234.23.23 </LIMIT>
Itulah beberapa aturan .htaccess untuk WordPress yang dapat membuat situs Anda lebih aman dan website Anda juga akan dapat diakses lebih cepat dari sebelumnya. Jika Anda ingin lebih meningkatkan keamanan di situs Anda, pelajari tentang Cara mengamankan WordPress ini.