Berbeda dengan sebagian besar halaman error, 403 Forbidden bukan tanda ada yang rusak. Permintaan sampai ke tujuan, server memahaminya dengan sempurna, menemukan sumber dayanya, lalu menolak memberikannya kepada Anda. Penolakan itu memang disengaja.
Ini penting karena mengubah apa yang perlu Anda cari. Tidak ada crash yang harus dilacak, tidak ada layanan yang perlu direstart — hanya ada satu aturan di suatu tempat yang berkata "bukan ini, bukan untuk Anda". Artikel ini menjelaskan bedanya 403 dengan 401, penyebabnya secara berurutan, dan situasi ketika 403 justru berarti semuanya bekerja sesuai rancangan.
Beda 403 Forbidden dan 401 Unauthorized
Dua kode ini sering tertukar, bahkan oleh developer, dan membedakannya benar-benar menghemat waktu saat sedang mencari masalah.
401 berarti "saya tidak tahu Anda siapa — buktikan". Login bisa menyelesaikannya. 403 berarti "saya tahu persis Anda siapa, dan jawabannya tetap tidak". Login tidak akan membantu, karena identitas memang bukan masalahnya.
| Kode | Artinya | Yang bisa dilakukan pengunjung |
|---|---|---|
| 401 Unauthorized | Belum terautentikasi, atau kredensial ditolak | Login, atau perbaiki kredensial |
| 403 Forbidden | Sudah dikenali tapi tidak punya izin | Tidak ada — pemilik yang harus mengubah aturan |
| 404 Not Found | Sumber daya tidak ada di alamat itu | Periksa apakah URL salah ketik |
| 429 Too Many Requests | Dibatasi karena permintaan terlalu banyak | Tunggu, lalu perlambat |
Penyebab umum, dari yang paling sering
- Permission file atau folder salah. File web biasanya butuh 644 dan folder 755. File dengan permission 600 tidak bisa dibaca web server dan langsung menghasilkan 403.
- Tidak ada file index di dalam folder, sementara directory listing dimatikan. Server tidak punya apa pun untuk ditampilkan dan tidak boleh menampilkan daftar file, jadi ia menolak. Ini penyebab nomor satu dari kasus "folder saya error 403".
- Aturan di .htaccess atau konfigurasi server. Satu baris "Deny from all", aturan anti-hotlink, atau daftar IP yang diizinkan yang sudah tidak memuat IP Anda.
- Plugin keamanan atau WAF memblokir Anda. Plugin firewall WordPress, ModSecurity, dan aturan Cloudflare semuanya mengembalikan 403 saat sebuah permintaan melanggar aturan — sering kali false positive pada permintaan yang sepenuhnya normal.
- IP Anda diblokir. Entah sengaja, atau otomatis oleh pemblokir brute-force setelah beberapa kali gagal login.
- File dimiliki user yang salah. Sering terjadi setelah upload lewat SSH sebagai root atau restore dari backup — filenya ada dan terlihat baik-baik saja, tapi web server tidak bisa membacanya.
- Pemblokiran berdasarkan negara atau pemblokiran bot. Sebagian situs mengembalikan 403 untuk seluruh negara, untuk rentang IP data center, atau untuk apa pun yang terlihat otomatis. Pengguna VPN mengalaminya terus-menerus.
Periksa dengan urutan ini
Mulailah dengan memastikan apakah error hanya terjadi pada Anda atau pada semua orang, karena fakta itu saja sudah mencoret separuh daftar di atas.
- Buka situs di jendela penyamaran, lalu lewat data seluler dengan Wi-Fi dimatikan. Kalau lewat data seluler bisa, IP Anda sedang diblokir dan permission file bukan masalahnya.
- Minta orang di negara lain membukanya, atau gunakan alat pemeriksa online. Anda dapat 403 sementara mereka dapat 200 berarti ada pemblokiran wilayah atau IP.
- Kalau semua orang mengalaminya, periksa permission dulu: 644 untuk file, 755 untuk folder. Di shared hosting, File Manager bisa menampilkan dan mengubahnya; lewat SSH gunakan "chmod 644" dan "chmod 755".
- Pastikan foldernya punya file index — index.html atau index.php. Kalau Anda memang ingin pengunjung melihat daftar file, directory listing harus diaktifkan secara eksplisit.
- Ubah nama .htaccess menjadi .htaccess.bak lalu muat ulang. Kalau 403 hilang, salah satu aturan di file itu penyebabnya dan Anda bisa menelusurinya dari sana. Kembalikan filenya setelah ketemu.
- Nonaktifkan plugin keamanan satu per satu. Plugin firewall dan "hardening" adalah sumber false positive 403 yang sangat umum, terutama pada URL admin dan endpoint REST API.
- Baca error log server. Apache dan ModSecurity mencatat aturan mana yang terpicu, mengubah tebak-tebakan menjadi satu baris teks yang jelas.
- Periksa kepemilikan file. Di server Linux, web server biasanya berjalan sebagai www-data, nginx, atau user khusus akun; file milik root tidak akan terbaca meski permission-nya terlihat benar.
Ketika 403 memang sudah benar
Tidak semua 403 adalah masalah. Banyak di antaranya adalah server yang sedang melindungi sesuatu persis seperti yang dirancang, dan "memperbaikinya" justru kesalahan yang sesungguhnya.
File konfigurasi, folder backup, direktori .git, file environment, dan folder upload yang tidak boleh mengeksekusi kode diblokir secara rutin dan benar. Kalau Anda melihat 403 pada /.env atau /.git/config, itu kabar baik — kalau file-file itu bisa dibaca, barulah ada insiden keamanan sungguhan.
Rate limiting dan pemblokiran bot juga muncul sebagai 403. Kalau crawler, sistem monitoring, atau API client Anda mendapat 403 sementara browser normal-normal saja, server sedang mengatakan ia tidak menginginkan trafik otomatis pada kecepatan itu. Solusinya memperlambat atau meminta akses, bukan menyamarkan permintaan.
Sebelum mengubah apa pun, tanyakan apakah sumber daya ini memang seharusnya publik. Kalau jawabannya tidak, 403 sedang menjalankan tugasnya dan tindakan yang benar adalah membiarkannya.
Ingin kendali penuh atas permission dan aturan firewall Anda?
Cloud VPS dengan akses root penuh, error log sungguhan, dan tanpa batasan shared hosting — mulai ฿150/bulan.
Pertanyaan yang Sering Diajukan
Kenapa saya kena 403 tapi rekan saya tidak?
Ada sesuatu yang memperlakukan permintaan Anda berbeda — hampir selalu alamat IP. Entah diblokir sengaja, diblokir otomatis oleh pemblokir brute-force setelah gagal login, atau Anda memakai VPN yang IP-nya masuk daftar hitam. Coba lewat data seluler: kalau situsnya terbuka, IP-lah pembedanya.
Saya sudah set file ke 777 tapi tetap 403. Kenapa?
Karena permission mungkin memang tidak pernah jadi masalahnya, dan sekarang Anda menambah risiko keamanan. Kalau 777 tidak memperbaikinya, periksa permission folder induk, kepemilikan file, atau aturan deny eksplisit di .htaccess. Kembalikan file ke 644 apa pun hasilnya.
Apakah 403 memengaruhi peringkat pencarian?
Ya, kalau Googlebot yang menerimanya. Aturan firewall yang terlalu ketat kadang ikut memblokir bot mesin pencari, dan halaman yang tidak bisa diambil Google akhirnya keluar dari indeks. Gunakan URL Inspection di Search Console untuk melihat persis apa yang diterima Googlebot — bisa sangat berbeda dari yang Anda lihat.
Bagaimana tahu 403 datang dari Cloudflare atau dari server saya?
Halaman 403 Cloudflare punya branding dan mencantumkan ray ID; 403 dari server biasanya halaman polos dari Apache atau Nginx, atau halaman error kustom Anda. Kalau dari Cloudflare, aturannya ada di dashboard Cloudflare, bukan di server — itulah sebabnya mengubah .htaccess tidak berpengaruh sama sekali.
GUIDES
Artikel terkait
Lanjut membaca topik serupa
404 Not Found — Penyebab, Dampak SEO, dan Kapan Justru Benar
Semua website punya 404 dan sebagian besar tidak masalah. Yang perlu diperhatikan hanya sebagian kecil: halaman yang dulu ada dan masih ditautkan orang, serta versi diam-diam yang mengembalikan status 200 padahal menampilkan "tidak ditemukan".
Baca selengkapnya500 Internal Server Error — Penyebab dan Cara Mengatasinya
500 adalah error paling tidak informatif di web: artinya "ada yang salah dan saya tidak akan bilang apa". Kabar baiknya, server hampir selalu menuliskan alasan sebenarnya ke sebuah file log. Panduan ini menunjukkan di mana log itu dan urutan pemeriksaan yang paling cepat menemukan biangnya.
Baca selengkapnya502 Bad Gateway — Arti dan Cara Mengatasinya
502 berarti satu server meminta halaman ke server lain dan menerima jawaban yang tidak bisa dipakai. Panduan ini menjelaskan dua mesin mana yang terlibat, beda 502 dengan 500 dan 504, serta urutan pemeriksaan supaya Anda menemukan penyebab aslinya lebih dulu.
Baca selengkapnya