CodeIgniter merupakan salah satu framework open-source andalan bagi pengembang website untuk saat ini. Namun tidak jarang pengembang mendapatkan kendala saat ingin men-deploy websitenya dari localhost ke server hosting. Salah satu error yang biasa terjadi adalah muncul 404 Not Found. Nah apa penyebab error ini? Yuk simak sama-sama artikelnya.
Baca juga: Clear Cache Laravel di cPanel
Penyebab Error
Penyebab error yang pertama biasanya terjadi karena versi php dan versi CodeIgniter yang digunakan tidak sesuai. Untuk CodeIgniter 3 silahkan menggunakan versi php 5.6 sedangkan CodeIgniter 4 sobat teknis harus menggunakan versi php 7.2 atau yang lebih tinggi.
Penyebab error yang kedua adalah file .htaccess
yang tidak tersedia atau tidak sesuai.
Dan penyebab error yang ketiga adalah karena ada kesalahan pada penamaan controllernya.
Cek Versi CodeIgniter
Untuk melakukan pengecekan versi CodeIgniter sobat teknis bisa view file CodeIgniter.php
melalui file manager panel hosting sobat, yang berada di dalam folder system
> core
> CodeIgniter.php
. Lalu cari baris berikut:
/**
* CodeIgniter Version
*
* @var string
*
*/
const CI_VERSION = '3.1.10';
Dari contoh diatas CodeIgniter yang digunakan adalah versi 3, tapi tidak menutup kemungkinan versi CodeIgniter yang sobat teknis gunakan berbeda.
Cara Mengatasi
Menyesuaikan Versi PHP
Jika sobat teknis menggunakan hosting cPanel maka untuk melakukan perubahan versi php sangatlah mudah. Pertama silahkan sobat teknis login ke cPanel.
Klik menu Select PHP Version pada kelompok menu Software.
Lalu pada bagian Current PHP Version silahkan sesuaikan dengan CodeIgniter yang sobat teknis gunakan.
Jika di cPanel sobat tidak tersedia menu Select PHP Version, sobat teknis bisa menggunakan menu MultiPHP Manager.
Lalu checklist domain yang sobat gunakan, dan pada bagian PHP Version pilih sesuai dengan versi CodeIgniter yang sobat teknis gunakan, lalu klik Apply.
Memeriksa File .htaccess
Pertama periksa terlebih dahulu apakah di folder public CodeIgniter anda terdapat file .htaccess
. Jika tidak ada silahkan anda buat sebuah file baru dengan nama .htaccess
pastikan sobat menambahkan tanda titik (.) diawal nama filenya. Jika file .htaccess
sudah ada, pastikan pada baris kodenya terdapat script berikut ini:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
Atau untuk lebih lengkapnya sobat bisa gunakan script berikut:
# Disable directory browsing
Options All -Indexes
# ----------------------------------------------------------------------
# Rewrite engine
# ----------------------------------------------------------------------
# Turning on the rewrite engine is necessary for the following rules and features.
# FollowSymLinks must be enabled for this to work.
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
# If you installed CodeIgniter in a subfolder, you will need to
# change the following line to match the subfolder you need.
# http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritebase
# RewriteBase /
# Redirect Trailing Slashes...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Rewrite "www.example.com -> example.com"
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L]
# Checks to see if the user is attempting to access a valid file,
# such as an image or css document, if this isn't true it sends the
# request to the front controller, index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
# Ensure Authorization header is passed along
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>
<IfModule !mod_rewrite.c>
# If we don't have mod_rewrite installed, all 404's
# can be sent to index.php, and everything works as normal.
ErrorDocument 404 index.php
</IfModule>
# Disable server signature start
ServerSignature Off
# Disable server signature end
Baca juga: SMTP Error [421]: Failed to add recipient
Selanjutnya simpan file .htaccess
nya, dan coba kembali akses website CodeIgniter sobat, seharusnya saat ini sudah dapat diakses dengan baik dan tidak 404 Not Found lagi.
Menyesuaikan Controller
Error 404 ini sering terjadi ketika seorang developer mendevelop codeigniternya di Windows, dan mengupload codeigniternya ke hosting yang menggunakan sistem operasi Linux. Dikarenakan pada sistem operasi Windows tidak menerapkan case sensitive, sementara di sistem operasi Linux penamaan file dan folder menggunakan case sensitive. Oleh karena itu perlu diperhatikan kembali pada penamaan controllernya.
Berikut ini merupakan contoh penamaan controller yang salah, pada kata welcome huruf “w” tidak menggunakan huruf Kapital.
<?php
class welcome extends CI_Controller {
public function index()
{
$this->load->view('welcome_message');
}
}
Seharusnya code diatas pada kata welcome ditulis dengan awalan huruf kapital sehingga menjadi Welcome. Berikut contoh yang benar:
<?php
class Welcome extends CI_Controller {
public function index()
{
$this->load->view('welcome_message');
}
}
Jika sudah disesuaikan bisa di save dan coba cek kembali akses website sobat. Semoga panduan kali ini bisa bermanfaat untuk sobat teknis yang membutuhkan.