Force HTTPS di Laravel 4.2 (termasuk asset, URL, dan form)

Sebelum Tulisan Dimulai…
Halo, terkejut dengan judulnya? posting perdana tahun 2023 cuma masih pakai Laravel 4.2 haha.. di mana saat tulisan ini dibuat, Laravel sudah muncul versi 9.45.1 huehehe..

Ya, ini dikarenakan hari ini saya mendapatkan kabar kalau web-app yang saya buat sebelumnya dengan memakai Laravel 4.2 servernya migrasi. Karena pindah, biasanya ada beberapa pengaturan dan lain sebagainya yang membuat web-app tsb tidak bisa jalan sempurna.

Salah satu kendala adalah di server ini (bukan saya yang menginstal, saya cuma mendapatkan akses ke folder web-app via SSH) URL web-app memakai https, tetapi asset (css, javascript, gambar) malah ke http, sehingga membuat CSS tentu tidak ter-load.

Tulisan Sesudah Sebelum Tulisan Dimulai…
Tulisan ini sebenarnya diniatkan untuk sebagai catatan bagi saya maupun beberapa web developer yang mungkin masih memakai Laravel versi 4.2 menemukan solusi.

Ada 3 solusi yang bisa dilakukan, pertama jika memakai web server yang support .htaccess seperti Apache atau Litespeed, maka silakan tambahkan saja kode redirect ke https seperti di bawah:

RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
menambahkan kode untuk redirect di berkas .htaccess

Cuma, di kasus saya, hal ini tidak bisa dilakukan, saya mendapatkan error: ERR_TOO_MANY_REDIRECTS 

Selanjutnya saya mencoba untuk mengubah via filters.php, berkas ini bisa ditemukan di path: /app/filters.php, lalu tambahkan kode redirect persis di dalam App::before(function($request)

if( ! Request::secure())
{
    return Redirect::secure(Request::path());
}
menambahkan script untuk redirect ke https

Ternyata, cara ini sama seperti cara pertama, lagi-lagi saya mendapatkan galat dengan pesan: ERR_TOO_MANY_REDIRECTS 

Selanjutnya, cara ketiga adalah cara terakhir, kalau ini tidak bisa, maka saya harus mengubah semua kode saya menjadikan fungsi asset() menjadi secure_asset(), belum lagi semua Form::open harus saya tambahkan opsi true di parameter ke 3 agar bisa menjadikannya memakai https.

Cara ini tetap menggunakan filters.php, tapi bukan me-redirect tapi mengubah skema menjadi https, caranya adalah dengan tetap dengan menambahkan di dalam fungsi App::before(function($request), tambahkan kode:

URL::forceSchema('https');
menambahkan script skema ke https

Alhamdulillah, cara ini akhirnya bisa membuat seluruh asset dan form juga URL ke https tanpa butuh mengubah satu-satu berkas.

Tulisan Sesudah Tulisan…
Jika kalian mendapatkan kendala yang sama, semoga 3 cara di atas bisa digunakan, sekian tutorial kali ini. Terima kasih untuk yang meluangkan waktu untuk membaca