Bagaimana membuat .htaccess redirect berjalan di NGINX?

Beberapa bulan yang lalu saya melakukan migrasi dari shared hosting ke VPS. Hal yang melatarbelakangi adalah cost dan performa. Cost yang lebih rendah dan performa yang lebih tinggi. Dan tentunya saya tidak menggunakan Apache sebagai webserver, melainkan NGINX. Yaps, silakan cek bechmark Apache vs NGINX, banyak blog yang sudah membahasnya.

Website yang saya pindahkan berbasis WordPress(WP) yang secara otomatis menambahkan .htaccess file untuk membuat URL menjadi SEO friendly. Setelah berkutat selama beberapa jam, saya berhasil menkonversi .htaccess URL rewrite ke dalam bentuk NGINX. Lalu saya bertemu dengan yang namanya “Redirect”.

Yaps, “Redirect” dengan status code 302 dan 301. Saya sudah hampir putus asa untuk membuat konfigurasi server yang tepat untuk NGINX, lalu saya menemukan cara akal-akalan yang masih bisa diterima akal sehat. WP redirect! Linknya disini (https://developer.wordpress.org/reference/functions/wp_redirect/). Berikut adalah contoh code untuk WP redirect.

Berikut adalah algoritma untuk membuat .htaccess redirect di NGINX:

  1. Definisikan dimana file .htaccess tersebut. Lalu open, dengan cursor di awal. Cek dokumentasi fopen disini: http://php.net/manual/en/function.fopen.php
  2. Kemudian cari URI-nya. Trim slash depan dan belakang, lalu tambahkan kembali slash di depannya.
  3. Pastikan kursor file tidak berada di akhir, lalu jalankan kodenya.
  4. Kita mengambil baris demi baris kode dengan fgets dengan panjang per baris max 9999. Cek dokumentasi fgets: http://php.net/manual/en/function.fgets.php
  5. Karena .htaccess tidak hanya berisi Redirect, maka kita akan membuat kondisi agar string diawali dengan “Redirect”.
  6. Rumus redirect adalah “Redirect 301 /uri-lama http://halaman/baru”, jika kita ingin mengambil “http://halaman/baru” maka kita harus memecahnya dengan explode.
  7. Lalu kita jalankan wp_redirect.

Untuk source code lengkapnya di bawah ini:

Code tersebut saya letakkan di theme function pada baris paling atas.

Apakah teman-teman punya kode yang lebih baik dari ini? Silakan tuliskan di kolom komentar. Terima kasih.

Leave a Reply