Laravel Cara Menghilangkan index.php di Folder public

Menghilangkan index.php demi membuat URL yang cantik, merupakan tuntutan untuk semua web developer untuk menghasilkan URL yang SEO Friendly.
3025  
       

Kasus membuat URL yang cantik dengan menghilangkan index.php ini tidak hanya terjadi di Laravel, melainkan hampir disemua Web Framework dan CMS. Biasanya masalah ini timbul karena mod_rewrite nya tidak ada. Tapi, untuk kebanyakan pengaturan server saat ini mod_rewrite sudah terinstall. Oleh karena itu, sudah pasti ada masalah lain, sehingga index.php nya ini masih muncul. Untuk itu, kita hadirkan cara menghilangkan index.php di Laravel.

Tentang Laravel

Laravel menjadi framework PHP yang paling tenar di tahun 2015-2016 karena kemudahannya dalam integrasi dengan komponen PHP lainnya. Selain itu, kebangkitan laravel ini juga adalah akibat kejenuhan dari para programmer web PHP karena tidak ada pengembangan yang signifikan terhadap bahasa pemrograman ini. Sehingga laravel hadir menjadi suatu solusi dan patut dipelajari oleh beberapa kalangan web programmer. Namun, semakin kuat integrasi suatu sistem pastilah keterikatan dengan sistem ini tidak jarang membuahkan masalah. Seperti kasus yang paling sering ditemukan adalah menghilangkan index.php supaya urlnya SEO Friendly.

Skenario

Berikut ini adalah skenario yang berisikan kondisi sistem ketika akan dihilangkan index.php di folder public. Adapun spesifikasi server yang digunakan antara lain:

  • Laravel 5.0
  • Apache 2.2 httpd
  • php56w
  • MariaDB
  • Directory Install laravel /var/www/html/
  • Yang digunakan http://example.com/public. Public tidak dihilangkan.

Pengaturan Laravel

Kesalahan yang sering terjadi ketika migrasi Laravel ke server biasanya disebabkan oleh pengaturan laravel itu sendiri. Sehingga, mengakibatkan error yang berkepanjangan. Bisa mulai dari tidak adanya dot env, htaccess, atau salah versi Laravel ketika mencari solusi di internet. Maka untuk itu pertama-tama kita harus memastikan versi laravel yang akan digunakan. Berikut ini adalah caranya.

#masuk ke directory laravel dulu
cd /var/www/html
#kemudian gunakan artisan
php artisan --version

Setelah mengeksekusi perintah tersebut, kita bisa yakin bahwa laravel yang digunakan sudah pasti versinya.

Periksa file .ENV

Pada dasarnya dalam penggunaan laravel, dot env ini memang sangat kejam apalagi ketika copy paste biasanya file dot env ini tidak ikut terbawa. Begitu pula dengan htaccess-nya. Sebagai langkah awal kita akan cek dot env nya apakah sudah ada atau belum. Jika belum ada maka tambahkan. Copy paste dari laravel env example di github kemudian paste kan ke dot env di directory root laravel. Setelah itu, kemudian sesuaikan pengaturannya seperti key dan koneksi database.

Check Key Hash

Biasanya hash key yang ada di konfigurasi laravel ini, haruslah berisikan 8,16,24,32 digit karakter. Jadi pastikan ini diisi dulu sesuai dengan digit yang ada jika menggunakan php versi 5.6.

Check Koneksi Database

Pastikan koneksi database sudah teruji dan valid.

Error Whoops…

jika ada error whoops seperti itu, kemungkinan besar file dot env nya memang belum ada.
 
Berikut ini adalah sumber kode dot env dari laravel.

APP_NAME=Laravel
APP_ENV=local
APP_KEY=
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=http://localhost

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null

PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=

Kedua Cek konfigurasi HTTPD

Untuk sistem operasi CentOS 6, lokasi pengaturan httpd ada di /etc/httpd/conf/httpd.conf. Pastikan directive yang ada dibawah /var/www/html sudah AllowOverride All dari AllowOverride None. Perintah ini berfungsi untuk, mengizinkan directory tersebut untuk diubah dengan menggunakan htaccess didalamnya.

Pengaturan .HTACCESS

Setelah itu kita akan berlanjut ke pemeriksaan dot htaccess di dalam folder public. Jika yang bawaan dari github laravel tidak berjalan dengan baik, bisa gunakan kode ini.

RewriteEngine On
RewriteBase /public/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]

Dengan demikian, situs laravel bisa diakses dengan menggunakan alamat http://example.com/public tanpa harus menggunakan index.php untuk setiap controllernya. Semoga membantu.

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>