Cara Append Query String di Apache .htaccess (RewriteRule)

Mekanisme Append Query String

Untuk menambahkan atau mempertahankan query string pada URL menggunakan Apache mod_rewrite, Anda wajib menggunakan flag [QSA] (Query String Append). Tanpa flag ini, parameter query string yang ada pada URL asli akan terhapus dan digantikan oleh query string baru yang Anda definisikan dalam RewriteRule.

Sintaks Dasar

Flag [QSA] menginstruksikan server untuk menggabungkan query string dari URL yang diminta dengan query string yang didefinisikan dalam target penulisan ulang (rewrite target).

RewriteEngine On
RewriteRule ^produk/(.*)$ /toko.php?id=$1 [QSA,L]

Dalam contoh di atas, jika pengguna mengakses /produk/baju?warna=merah, maka server akan memprosesnya menjadi /toko.php?id=baju&warna=merah.

Tabel Perbandingan Flag Query String

FlagFungsiDampak pada Query String
[QSA]Query String AppendMenggabungkan parameter lama dan baru.
[QSD]Query String DiscardMembuang semua query string asli.
[QSA,QSD]KombinasiTidak disarankan (QSD akan membatalkan QSA).

Langkah Implementasi

  1. Pastikan modul mod_rewrite aktif di server Apache Anda.
  2. Buka file .htaccess di direktori root atau folder target.
  3. Tambahkan baris RewriteEngine On jika belum ada.
  4. Tulis aturan RewriteRule dengan menyertakan flag [QSA] di dalam kurung siku.
  5. Simpan file dan lakukan pengujian menggunakan curl -I atau browser untuk memastikan parameter diteruskan dengan benar.

Troubleshooting Umum

  • Parameter Ganda: Jika Anda menambahkan parameter manual yang sama dengan yang dikirim pengguna, Apache akan menghasilkan duplikasi (misal: ?id=1&id=2). Gunakan RewriteCond untuk memvalidasi input jika diperlukan.
  • Encoding: Pastikan karakter khusus dalam query string sudah di-encode dengan benar agar tidak merusak struktur URL.
  • Urutan Aturan: Aturan yang lebih spesifik harus diletakkan di atas aturan yang lebih umum untuk menghindari konflik pemrosesan.