Error 403 Forbidden, Penyebab dan Cara Mengatasinya
Error 403 Forbidden berarti server menolak akses. Kenali penyebabnya, dari izin file, .htaccess, file index hilang, sampai firewall, dan solusinya.
Jawaban singkat
Error 403 Forbidden berarti server memahami permintaan tetapi menolak memberikan akses. Penyebab paling umum adalah izin file atau folder yang salah, aturan penolakan di .htaccess, folder tanpa file index, blokir IP, atau firewall aplikasi web seperti ModSecurity.
Daftar isi
Kamu baru selesai mengunggah website, membuka alamatnya, dan yang muncul justru tulisan "403 Forbidden". Atau situs yang kemarin normal tiba-tiba menolak dibuka dari jaringan kantor, padahal dari ponsel lancar. Dua situasi ini terlihat berbeda, tapi kodenya sama: server menolak memberikan akses.
Menurut standar HTTP (RFC 9110), kode 403 berarti server memahami permintaan, tetapi menolak memenuhinya. Berbeda dengan 404 yang berarti halaman tidak ditemukan, pada 403 halamannya mungkin ada, hanya saja kamu tidak diizinkan membukanya. Penyebabnya hampir selalu ada di pengaturan server atau file situs, bukan di browser pengunjung.
Kenali dulu pola error-nya
Pola kemunculan error memberi petunjuk besar tentang penyebabnya. Error di seluruh situs biasanya mengarah ke izin folder utama atau aturan global di .htaccess. Error hanya di satu folder mengarah ke file index yang hilang atau aturan khusus folder itu. Error yang hanya dialami sebagian pengunjung hampir pasti berasal dari blokir IP atau firewall.
| Pola | Penyebab paling mungkin | Cara memeriksa |
|---|---|---|
| Seluruh situs 403 setelah upload | Izin folder atau file salah | Cek izin di File Manager |
| Satu folder 403, folder lain normal | Tidak ada file index | Cek ada tidaknya index.php atau index.html |
| 403 setelah memasang plugin keamanan | Aturan baru di .htaccess | Bandingkan isi .htaccess dengan sebelumnya |
| Hanya IP tertentu yang kena | IP Blocker, firewall, atau WAF CDN | Coba dari jaringan lain, cek daftar blokir |
| 403 saat kirim formulir atau simpan pos | ModSecurity | Cari "ModSecurity" di menu Errors |
| Gambar 403 saat dibuka dari situs lain | Hotlink protection | Cek pengaturan Hotlink Protection |
Cara tercepat memastikan penyebabnya adalah membaca log. Di cPanel, buka Metrics > Errors dan cari baris dengan waktu yang sama dengan saat kamu membuka halaman. Panduannya ada di cara membaca error log di cPanel.
Izin file dan folder yang salah
Web server butuh izin baca untuk file dan izin masuk untuk folder. Di kebanyakan hosting Linux, pola yang umum dipakai adalah 755 untuk folder dan 644 untuk file. Izin seperti 700 atau 600 pada folder public_html atau file di dalamnya bisa membuat server menolak membacanya, hasilnya 403.
Masalah ini sering terjadi setelah mengunggah file dari arsip zip atau memakai klien FTP yang membawa izin dari komputer lokal. Di File Manager cPanel, pilih file atau folder, klik Permissions, lalu atur angkanya. Jangan memakai 777 sebagai jalan pintas. Izin itu membuat siapa pun di server bisa menulis ke file, dan banyak server menolak menjalankan skrip PHP dengan izin seperti itu. Penjelasan arti angka izin ada di memahami permission Linux chmod dan chown.
Pemilik file juga berpengaruh. File yang dipindahkan dari akun lain atau diekstrak oleh root di VPS bisa dimiliki user yang salah, sehingga web server tidak boleh membacanya. Di VPS, periksa dengan ls -l lalu betulkan dengan chown.
Aturan .htaccess yang menolak akses
File .htaccess bisa berisi aturan yang menolak akses, misalnya:
Require all denied
atau aturan lama gaya Apache 2.2:
Order deny,allow
Deny from all
Aturan seperti ini wajar di folder yang memang harus tertutup, tapi jadi masalah bila tertulis di folder utama. Plugin keamanan, plugin cache, atau potongan kode dari tutorial sering menambahkan aturan tanpa kamu sadari. Log Apache untuk kasus ini biasanya berisi AH01630: client denied by server configuration.
Cara mengujinya: unduh dulu salinan .htaccess, lalu ganti namanya menjadi .htaccess-lama. Kalau situs kembali terbuka, masalahnya ada di file itu. Untuk WordPress, buat ulang .htaccess bawaan dengan membuka Settings > Permalinks lalu klik Save, kemudian tambahkan aturan lain satu per satu.
Perhatikan juga file .htaccess di folder induk. Aturan Apache berlaku turun ke subfolder, jadi .htaccess di public_html bisa memblokir aplikasi di public_html/toko, meski folder toko sendiri tidak punya aturan penolakan. Kalau ragu, periksa setiap .htaccess dari folder yang error naik sampai ke folder utama.
Folder tanpa file index
Saat kamu membuka alamat folder, server mencari file index seperti index.php atau index.html. Kalau tidak ada, dan fitur daftar isi folder dimatikan (biasanya memang dimatikan demi keamanan), server menjawab 403. Log mencatatnya sebagai AH01276: Cannot serve directory.
Ini sering dialami saat file website terunggah ke subfolder, misalnya public_html/website-saya/, padahal domain mengarah ke public_html. Pindahkan isi folder ke lokasi yang benar. Langkah upload yang tepat dijelaskan di cara upload website ke hosting lewat File Manager.
Kenapa hanya sebagian pengunjung yang kena?
Kalau situs terbuka dari ponsel tapi 403 dari jaringan kantor, kemungkinan besar IP kantor diblokir. Sumbernya bisa beberapa:
- IP Blocker di cPanel, yang mungkin pernah diisi rentang IP terlalu luas.
- Firewall server yang memblokir IP setelah beberapa kali gagal login, misalnya karena ada perangkat kantor yang terus mencoba password lama di aplikasi email.
- Firewall aplikasi web seperti ModSecurity, yang memblokir permintaan yang mirip serangan. Formulir berisi kode atau kata tertentu kadang salah terdeteksi.
- Aturan keamanan CDN, bila situs memakai layanan seperti Cloudflare. Halaman blokir dari CDN biasanya punya tampilan dan kode referensi sendiri.
Untuk blokir firewall server dan ModSecurity, kamu biasanya butuh bantuan penyedia hosting. Kirim alamat IP publikmu, waktu kejadian, dan URL yang ditolak, supaya mereka bisa mencari catatan blokirnya. Jangan meminta ModSecurity dimatikan untuk seluruh situs. Lebih aman bila hanya aturan yang salah blokir yang dikecualikan.
Hotlink protection juga bisa memberi 403 pada gambar yang dipanggil dari domain lain, termasuk domain baru milikmu sendiri setelah pindah alamat. Tambahkan domain itu ke daftar yang diizinkan di menu Hotlink Protection.
Ringkasan
Error 403 berarti server sengaja menolak akses, jadi jawabannya ada di aturan yang dipasang, bukan di koneksi pengunjung. Mulailah dari log untuk melihat alasan penolakan, lalu periksa izin file, isi .htaccess, keberadaan file index, dan daftar blokir IP secara berurutan. Ubah satu hal setiap kali dan uji lagi, supaya kamu tahu persis perubahan mana yang memperbaiki masalah.


