Masalah Magento index.php missing umumnya terjadi akibat konfigurasi web server (Apache atau Nginx) yang belum mendukung fitur URL rewrites, file .htaccess yang terhapus atau rusak, atau pengaturan web/unsecure/base_url di database yang tidak menyertakan file index.php saat mode Apache Rewrites non-aktif. Hal ini menyebabkan setiap kali halaman diakses selain beranda, server mencari file fisik dan mengembalikan error 404.
Untuk mengatasi masalah ini secara permanen, Anda harus memeriksa konfigurasi routing server, memastikan modul mod_rewrite aktif, dan memverifikasi pengaturan base URL pada database Magento Anda.
Langkah Perbaikan Berdasarkan Web Server
Penyebab paling sering dari error ini adalah kegagalan server meneruskan permintaan (request) ke titik masuk utama Magento yaitu index.php. Pilih langkah di bawah ini sesuai dengan web server yang Anda gunakan.
1. Perbaikan pada Server Apache (.htaccess)
Jika Anda menggunakan Apache, pastikan modul mod_rewrite sudah aktif dan file .htaccess bawaan Magento berada di root direktori instalasi.
# Aktifkan mod_rewrite di Ubuntu/Debian
sudo a2enmod rewrite
sudo systemctl restart apache2
# Periksa konfigurasi vhost Apache (/etc/apache2/sites-available/000-default.conf)
<Directory /var/www/html/magento2>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Pastikan direktif AllowOverride All telah aktif agar file .htaccess Magento dapat dibaca oleh Apache.
2. Perbaikan pada Server Nginx (nginx.conf)
Nginx tidak membaca file .htaccess. Anda harus memasukkan konfigurasi penulisan ulang URL secara manual ke dalam blok server Nginx Anda.
server {
listen 80;
server_name example.com;
set $MAGE_ROOT /var/www/html/magento2;
set $MAGE_MODE developer;
include /var/www/html/magento2/nginx.conf.sample;
}
# Pastikan bagian upstream php handler mengarah ke soket PHP-FPM yang benar
Setelah memperbarui konfigurasi Nginx, lakukan uji sintaks dan restart layanan Nginx:
sudo nginx -t
sudo systemctl restart nginx
Periksa Konfigurasi Database Magento
Jika URL rewrites diaktifkan atau dinonaktifkan melalui CLI, terkadang nilai pada tabel core_config_data tidak sinkron. Jalankan perintah berikut melalui terminal SSH untuk mengatur ulang base URL dan membersihkan cache:
# Cek base URL saat ini
php bin/magento config:show web/unsecure/base_url
php bin/magento config:show web/secure/base_url
# Atur ulang base URL (contoh tanpa index.php jika rewrite aktif)
php bin/magento config:set web/seo/use_rewrites 1
php bin/magento cache:flush
Tabel Diagnostik & Solusi Cepat
| Gejala Error | Penyebab Utama | Solusi Perbaikan |
|---|---|---|
| Hanya halaman beranda yang bisa diakses, menu lain 404. | Modul mod_rewrite Apache mati atau AllowOverride bernilai None. |
Aktifkan mod_rewrite dan ubah AllowOverride All pada konfigurasi Apache. |
| Error 404 pada semua halaman di server Nginx. | File nginx.conf.sample belum di-include pada blok server. |
Tambahkan baris include file konfigurasi Nginx bawaan Magento. |
URL mengandung /index.php/ secara terus-menerus. |
Pengaturan use_rewrites bernilai 0 di database. |
Jalankan perintah php bin/magento config:set web/seo/use_rewrites 1. |
Tips Troubleshooting Lapangan
Jika setelah melakukan langkah di atas error masih berlanjut, pastikan:
- Izin akses file (file permissions) sudah benar (biasanya 644 untuk file dan 755 untuk direktori).
- Folder
var/dangenerated/memiliki hak tulis penuh untuk user web server (www-data/nginx). - Selalu jalankan
php bin/magento cache:cleandanphp bin/magento cache:flushsetelah melakukan perubahan konfigurasi.