Tutorial 23 Jul 2026 39 Kali Dibaca

Cara Mengatasi Semua Route Laravel Menjadi 404 di Hosting

Gugun Nurdiansyah
Penulis
Cara Mengatasi Semua Route Laravel Menjadi 404 di Hosting

Masalah Semua Route Laravel Menjadi 404

Salah satu masalah yang sering muncul setelah aplikasi Laravel diunggah ke hosting adalah halaman utama dapat dibuka, tetapi halaman lainnya menghasilkan error:

404 Not Found

Sebagai contoh, halaman berikut dapat dibuka:

https://domainanda.com

Namun, route lain tidak dapat diakses:

https://domainanda.com/login
https://domainanda.com/dashboard
https://domainanda.com/produk

Masalah ini biasanya tidak berarti route Laravel hilang. Dalam banyak kasus, web server belum meneruskan request tersebut ke file index.php milik Laravel.

Laravel menggunakan pola front controller. Seluruh request aplikasi harus diarahkan ke public/index.php, kemudian Laravel menentukan controller, middleware, dan halaman yang perlu dijalankan. Karena itu, document root server harus mengarah ke folder public, bukan ke root project Laravel. (Laravel)

Penyebab Route Laravel Menjadi 404

Beberapa penyebab yang paling sering ditemukan adalah sebagai berikut.

1. File .htaccess Tidak Tersedia

Pada server Apache atau LiteSpeed, Laravel menggunakan file .htaccess di dalam folder public untuk mengarahkan request ke index.php.

Jika file tersebut tidak ikut terunggah, halaman utama mungkin masih terbuka, tetapi route lain akan menghasilkan 404.

File .htaccess termasuk file tersembunyi. Pada File Manager cPanel, file tersebut tidak terlihat apabila pilihan Show Hidden Files belum diaktifkan.

2. Document Root Tidak Mengarah ke Folder Public

Struktur Laravel umumnya seperti berikut:

project-laravel/
├── app/
├── bootstrap/
├── config/
├── database/
├── public/
│   ├── index.php
│   └── .htaccess
├── resources/
├── routes/
├── storage/
├── vendor/
├── artisan
└── .env

Folder yang seharusnya diakses oleh domain adalah:

project-laravel/public

Jika domain diarahkan ke root project atau folder lain, proses routing dapat gagal. Selain menimbulkan error, mengarahkan domain ke root project juga berisiko mengekspos file internal seperti .env, konfigurasi, dan source code. Dokumentasi Laravel menegaskan bahwa request web harus diarahkan ke public/index.php. (Laravel)

3. Isi Folder Public Dipindahkan tetapi index.php Belum Disesuaikan

Pada shared hosting, pengguna sering menempatkan source Laravel di luar public_html, kemudian memindahkan isi folder public ke public_html.

Strukturnya dapat menjadi seperti berikut:

/home/username/laravel-app
/home/username/public_html

Jika path di dalam public_html/index.php masih menggunakan struktur lama, aplikasi tidak dapat menemukan file Laravel yang diperlukan.

4. mod_rewrite Tidak Berjalan

Apache membutuhkan mod_rewrite agar aturan pada .htaccess dapat mengarahkan URL menuju index.php.

Selain modul tersebut, konfigurasi server juga harus mengizinkan aturan rewrite dari .htaccess. Apache menjelaskan bahwa aturan RewriteRule dalam .htaccess hanya diproses apabila konfigurasi server mengizinkannya melalui AllowOverride FileInfo atau AllowOverride All. (Apache HTTP Server)

Pada shared hosting, konfigurasi ini biasanya dikelola oleh penyedia hosting.

5. Route Cache Masih Menggunakan Data Lama

Laravel dapat menyimpan daftar route dalam cache agar proses pemuatan aplikasi lebih cepat.

Jika route baru ditambahkan atau diubah setelah cache dibuat, aplikasi mungkin masih menggunakan daftar route sebelumnya.

Laravel menyediakan route:cache untuk mengoptimalkan pendaftaran route dan optimize:clear untuk menghapus cache hasil optimasi. (Laravel)

6. Route Tidak Terdaftar

Error 404 juga dapat terjadi karena route memang belum tersedia di dalam aplikasi.

Route halaman web biasanya ditulis di:

routes/web.php

Sedangkan route API biasanya berada di:

routes/api.php

Kesalahan penulisan URL, prefix, nama parameter, atau middleware dapat membuat route tidak cocok dengan request pengguna.

7. Aplikasi Dipasang di Dalam Subfolder

Jika Laravel dijalankan melalui URL seperti:

https://domainanda.com/aplikasi

aturan rewrite mungkin membutuhkan penyesuaian karena aplikasi tidak berada pada root domain.

Apache menjelaskan bahwa RewriteBase dapat diperlukan ketika aturan rewrite bekerja dalam subdirektori dan menghasilkan path relatif. (Apache HTTP Server)

8. Terdapat .htaccess Lain yang Bertabrakan

File .htaccess pada folder induk dapat memiliki aturan redirect atau rewrite yang memengaruhi aplikasi Laravel.

cPanel menjelaskan bahwa urutan aturan pada .htaccess dapat menyebabkan konfigurasi aplikasi pihak ketiga bertabrakan atau tertimpa oleh redirect lain. (cPanel & WHM Documentation)

Cara Mengatasi Semua Route Laravel Menjadi 404

Ikuti langkah berikut secara berurutan agar sumber masalah lebih mudah ditemukan.

Langkah 1: Periksa Route Laravel

Masuk ke folder utama project Laravel melalui Terminal cPanel atau SSH:

cd /home/username/laravel-app

Kemudian jalankan:

php artisan route:list

Perintah tersebut akan menampilkan seluruh route yang terdaftar.

Contoh hasil:

GET|HEAD   /
GET|HEAD   login
GET|HEAD   dashboard
GET|HEAD   produk
POST       login

Jika route yang dicari tidak muncul, periksa file:

routes/web.php

Contoh route sederhana:

use Illuminate\Support\Facades\Route;

Route::get('/produk', function () {
    return view('produk');
});

Jika route tersedia pada route:list, tetapi tetap 404 melalui browser, masalah kemungkinan berada pada konfigurasi hosting atau rewrite.

Langkah 2: Periksa Document Root Domain

Buka cPanel, kemudian masuk ke menu:

Domains

Periksa bagian Document Root.

Konfigurasi yang ideal:

/home/username/laravel-app/public

Jangan menggunakan:

/home/username/laravel-app

Jika hosting mengizinkan perubahan document root, arahkan domain langsung ke folder public.

Laravel merekomendasikan agar server hanya melayani file dari folder public, karena folder tersebut berisi index.php sebagai pintu masuk aplikasi. (Laravel)

Langkah 3: Periksa File .htaccess

Buka File Manager cPanel.

Klik:

Settings

Kemudian aktifkan:

Show Hidden Files (dotfiles)

Periksa apakah file berikut tersedia:

public_html/.htaccess

atau:

laravel-app/public/.htaccess

cPanel menjelaskan bahwa file .htaccess merupakan file tersembunyi dan pilihan Show Hidden Files perlu diaktifkan agar dapat dilihat melalui File Manager. (cPanel & WHM Documentation)

Gunakan file .htaccess asli dari folder public project Laravel.

Contoh aturan dasarnya:

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews -Indexes
    </IfModule>

    RewriteEngine On

    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

Aturan tersebut akan membiarkan file dan folder yang benar-benar tersedia dibuka secara langsung. Request lainnya akan diarahkan ke index.php.

Apache menjelaskan bahwa pola dalam .htaccess tidak diawali garis miring karena path direktori sudah dihapus sebelum pencocokan aturan dilakukan. (Apache HTTP Server)

Langkah 4: Gunakan Struktur Hosting yang Aman

Jika document root domain utama tidak dapat diubah, gunakan struktur berikut:

/home/username/laravel-app
/home/username/public_html

Folder laravel-app menyimpan source Laravel:

app
bootstrap
config
database
resources
routes
storage
vendor
.env
artisan

Folder public_html hanya menyimpan isi dari folder public:

index.php
.htaccess
build
favicon.ico
robots.txt
storage

Jangan memindahkan seluruh project Laravel ke public_html jika tidak diperlukan.

Langkah 5: Sesuaikan Path index.php

Jika isi folder public dipindahkan ke public_html, buka:

public_html/index.php

Kemudian sesuaikan path menuju source Laravel.

Contoh source berada di:

/home/username/laravel-app

Maka index.php dapat menggunakan pola berikut:

<?php

use Illuminate\Http\Request;

define('LARAVEL_START', microtime(true));

if (file_exists($maintenance = __DIR__.'/../laravel-app/storage/framework/maintenance.php')) {
    require $maintenance;
}

require __DIR__.'/../laravel-app/vendor/autoload.php';

(require_once __DIR__.'/../laravel-app/bootstrap/app.php')
    ->handleRequest(Request::capture());

Sesuaikan nama folder laravel-app dengan nama folder project Anda.

Gunakan file public/index.php asli dari project sebagai dasar. Ubah hanya path menuju storage, vendor, dan bootstrap.

Langkah 6: Bersihkan Cache Route

Masuk ke folder utama Laravel:

cd /home/username/laravel-app

Kemudian jalankan:

php artisan optimize:clear

Perintah tersebut membersihkan cache konfigurasi, route, event, view, dan cache optimasi lain yang dibuat oleh Laravel. (Laravel)

Anda juga dapat membersihkan route secara khusus:

php artisan route:clear

Setelah aplikasi kembali berjalan normal pada server production, buat ulang cache:

php artisan optimize

Laravel menyediakan perintah optimize untuk menyimpan konfigurasi, event, route, dan view dalam cache sebagai bagian dari proses deployment production. (Laravel)

Langkah 7: Periksa APP_URL

Buka file .env dan pastikan APP_URL sesuai dengan domain:

APP_URL=https://domainanda.com

Jika aplikasi berada pada subdomain:

APP_URL=https://app.domainanda.com

Setelah mengubah .env, jalankan:

php artisan optimize:clear

Walaupun APP_URL biasanya bukan penyebab utama semua route menjadi 404, konfigurasi yang salah dapat memengaruhi URL yang dibuat aplikasi, redirect, asset, dan tautan tertentu.

Langkah 8: Periksa Route dengan Prefix

Periksa apakah route menggunakan prefix tertentu.

Contoh:

Route::prefix('admin')->group(function () {
    Route::get('/dashboard', function () {
        return view('admin.dashboard');
    });
});

Route tersebut harus dibuka melalui:

https://domainanda.com/admin/dashboard

Bukan:

https://domainanda.com/dashboard

Periksa hasilnya melalui:

php artisan route:list

Langkah 9: Periksa Parameter Route

Contoh route:

Route::get('/produk/{slug}', [ProductController::class, 'show']);

URL yang benar harus memiliki parameter:

https://domainanda.com/produk/nama-produk

Membuka URL berikut tidak akan cocok dengan route tersebut:

https://domainanda.com/produk

Jika halaman daftar produk diperlukan, tambahkan route terpisah:

Route::get('/produk', [ProductController::class, 'index']);
Route::get('/produk/{slug}', [ProductController::class, 'show']);

Langkah 10: Periksa Urutan Route Dinamis

Urutan route dapat memengaruhi hasil pencocokan URL.

Contoh:

Route::get('/produk/{slug}', [ProductController::class, 'show']);
Route::get('/produk/tambah', [ProductController::class, 'create']);

Pada kondisi tertentu, kata tambah dapat dianggap sebagai nilai dari {slug}.

Susun route khusus terlebih dahulu:

Route::get('/produk/tambah', [ProductController::class, 'create']);
Route::get('/produk/{slug}', [ProductController::class, 'show']);

Anda juga dapat membatasi parameter:

Route::get('/produk/{id}', [ProductController::class, 'show'])
    ->whereNumber('id');

Langkah 11: Periksa Konfigurasi Aplikasi dalam Subfolder

Jika Laravel dibuka melalui:

https://domainanda.com/aplikasi

tambahkan RewriteBase apabila konfigurasi hosting membutuhkannya:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /aplikasi/

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

Penggunaan RewriteBase bergantung pada struktur hosting dan cara path relatif diproses. Apache menjelaskan bahwa directive ini dapat diperlukan saat substitusi rewrite relatif digunakan dalam direktori tertentu. (Apache HTTP Server)

Namun, penggunaan subfolder sebaiknya dihindari jika aplikasi dapat dipasang pada domain atau subdomain tersendiri.

Langkah 12: Uji Apakah Rewrite Berjalan

Tambahkan route pengujian di routes/web.php:

Route::get('/test-route', function () {
    return 'Route Laravel berhasil';
});

Bersihkan cache:

php artisan optimize:clear

Kemudian buka:

https://domainanda.com/test-route

Jika route tersebut tetap 404, sedangkan muncul pada php artisan route:list, berarti request belum diarahkan dengan benar ke Laravel.

Periksa kembali:

  1. Document root.

  2. File .htaccess.

  3. Dukungan mod_rewrite.

  4. Path index.php.

  5. Aturan .htaccess pada folder induk.

Langkah 13: Uji index.php Secara Langsung

Untuk pengujian sementara, buka:

https://domainanda.com/index.php/test-route

Jika URL tersebut berhasil, tetapi URL berikut tidak:

https://domainanda.com/test-route

kemungkinan besar masalah berada pada rewrite URL atau .htaccess.

Setelah pemeriksaan selesai, aplikasi tetap sebaiknya menggunakan URL bersih tanpa index.php.

Langkah 14: Periksa Error Log

Buka cPanel, kemudian masuk ke:

Metrics → Errors

Periksa juga:

public_html/error_log

Untuk log Laravel, periksa:

storage/logs/laravel.log

Pesan yang dapat menjadi petunjuk antara lain:

File not found
RewriteRule not allowed here
Options FollowSymLinks not allowed here
Request exceeded the limit of internal redirects
Permission denied

Apache menjelaskan bahwa kesalahan konfigurasi rewrite, termasuk pengulangan internal redirect, dapat dilihat melalui error log server. (Apache HTTP Server)

Langkah 15: Hubungi Penyedia Hosting

Jika .htaccess sudah benar tetapi route tetap 404, hubungi penyedia hosting dan minta mereka memeriksa:

  1. Apakah mod_rewrite aktif.

  2. Apakah .htaccess diizinkan.

  3. Apakah AllowOverride mendukung FileInfo.

  4. Apakah terdapat aturan keamanan yang memblokir rewrite.

  5. Apakah document root domain sudah benar.

  6. Apakah terdapat konfigurasi virtual host yang bertabrakan.

Contoh pesan kepada penyedia hosting:

Mohon bantu periksa konfigurasi Apache untuk domain saya. Aplikasi Laravel dapat membuka halaman utama, tetapi seluruh route lain menjadi 404. File .htaccess sudah tersedia. Mohon pastikan mod_rewrite aktif dan AllowOverride mengizinkan aturan rewrite.

Urutan Perbaikan yang Disarankan

Lakukan pemeriksaan dengan urutan berikut:

  1. Jalankan php artisan route:list.

  2. Pastikan route memang terdaftar.

  3. Periksa document root domain.

  4. Pastikan file .htaccess tersedia.

  5. Periksa path pada index.php.

  6. Jalankan php artisan optimize:clear.

  7. Uji route sederhana.

  8. Uji URL menggunakan index.php.

  9. Periksa error log.

  10. Periksa konflik .htaccess.

  11. Hubungi penyedia hosting jika rewrite tidak berjalan.

Kesalahan yang Perlu Dihindari

Memindahkan Seluruh Project ke public_html

Tindakan ini dapat membuat .env, source code, dan file internal lebih berisiko diakses melalui internet.

Menghapus .htaccess

Tanpa aturan rewrite, route Laravel selain file atau folder fisik dapat menghasilkan 404.

Mengubah Semua Permission Menjadi 777

Permission 777 tidak memperbaiki masalah routing dan dapat menimbulkan risiko keamanan.

Menambahkan Redirect Tanpa Memahami Urutannya

Aturan redirect yang ditempatkan sebelum aturan Laravel dapat membuat request dialihkan ke lokasi yang salah. cPanel mencatat bahwa urutan aturan .htaccess dapat memengaruhi aplikasi pihak ketiga. (cPanel & WHM Documentation)

Mengubah Route tanpa Membersihkan Cache

Jika route cache masih aktif, perubahan route mungkin belum digunakan oleh aplikasi.

Mengedit index.php Tanpa Backup

Kesalahan path dapat membuat aplikasi gagal menemukan vendor/autoload.php atau bootstrap/app.php.

Checklist Route Laravel 404

Sebelum melakukan pengujian terakhir, pastikan:

  1. Route muncul pada php artisan route:list.

  2. Domain mengarah ke folder public.

  3. File index.php tersedia.

  4. File .htaccess tersedia.

  5. Path di dalam index.php sudah benar.

  6. mod_rewrite aktif.

  7. .htaccess diizinkan oleh server.

  8. Tidak terdapat redirect yang bertabrakan.

  9. Route cache sudah dibersihkan.

  10. APP_URL sesuai dengan domain.

  11. Prefix dan parameter route sudah benar.

  12. Error log telah diperiksa.

Bantuan Deployment Laravel dari Ovla Media

Masalah semua route Laravel menjadi 404 biasanya dapat diatasi dengan memperbaiki document root, .htaccess, path index.php, atau cache route.

Namun, deployment Laravel di hosting juga dapat mengalami masalah lain, seperti:

  1. Error 403 Forbidden.

  2. Vite manifest tidak ditemukan.

  3. Storage link tidak berfungsi.

  4. Database gagal terhubung.

  5. Session tidak tersimpan.

  6. Permission folder tidak sesuai.

  7. Application key tidak ditemukan.

  8. Versi PHP tidak kompatibel.

  9. File .env tidak terbaca.

  10. Aplikasi gagal setelah pindah server.

Ovla Media menyediakan layanan pengembangan, deployment, perbaikan, dan pemeliharaan aplikasi Laravel untuk shared hosting, cPanel, maupun VPS.

Kesimpulan

Semua route Laravel menjadi 404 di hosting biasanya terjadi karena request tidak diarahkan menuju public/index.php.

Langkah pertama adalah memastikan route tersedia:

php artisan route:list

Kemudian pastikan domain mengarah ke:

/project-laravel/public

Periksa file .htaccess, sesuaikan path index.php, lalu bersihkan cache:

php artisan optimize:clear

Jika route dapat dibuka menggunakan index.php tetapi tidak dapat dibuka melalui URL biasa, masalah hampir pasti berkaitan dengan rewrite atau konfigurasi .htaccess.

Jangan mengatasi masalah ini dengan permission 777 atau memindahkan seluruh project ke folder publik. Gunakan struktur hosting yang aman agar aplikasi dapat berjalan dengan baik dan file internal tetap terlindungi.

Konsultasi & Solusi

Butuh implementasi untuk kebutuhan bisnis?

OVLA Media membantu pengembangan dan optimasi aplikasi web, integrasi sistem, serta solusi Laravel sesuai kebutuhan perusahaan Anda.

#Laravel #Route Laravel 404 #Laravel 404 Not Found #Semua Route Laravel 404 #Laravel Hosting #Laravel cPanel #Laravel Shared Hosting #HTAccess Laravel #Mod Rewrite Laravel #Document Root Laravel #Public Folder Laravel #Route Cache Laravel #PHP Artisan #Laravel Deployment #Error Laravel #Web Development #PHP Developer #Laravel Developer Indonesia #Ovla Media #Jasa Laravel #Jasa Deployment Laravel #Jasa Perbaikan Laravel
Beranda Produk Artikel
Konsultasi
OVLA

Navigasi Utama

Hubungi Kami

Mulai Konsultasi Sekarang