Fungsi Flag [QSA] pada Apache RewriteRule: Panduan Teknis

Definisi dan Fungsi Flag [QSA]

Flag [QSA] atau Query String Append adalah instruksi pada modul mod_rewrite Apache yang berfungsi untuk menggabungkan query string dari URL asli (permintaan masuk) ke URL tujuan (hasil penulisan ulang). Tanpa flag ini, jika Anda melakukan penulisan ulang URL yang menyertakan parameter baru, Apache akan membuang parameter asli dari URL pengunjung.

Sintaks Dasar

RewriteRule ^halaman-lama$ /halaman-baru.php?id=123 [QSA,L]

Dalam contoh di atas, jika pengguna mengakses domain.com/halaman-lama?ref=google, maka server akan mengarahkannya ke domain.com/halaman-baru.php?id=123&ref=google. Tanpa [QSA], parameter ref=google akan hilang.

Tabel Perbandingan Perilaku [QSA]

SkenarioTanpa [QSA]Dengan [QSA]
URL Masuk/produk?id=1/produk?id=1
RewriteRuleRewriteRule ^produk /item [L]RewriteRule ^produk /item [QSA,L]
Hasil Akhir/item/item?id=1

Kapan Harus Menggunakan [QSA]?

  • Migrasi URL: Saat mengubah struktur URL namun tetap ingin mempertahankan parameter pelacakan (seperti UTM atau ID sesi).
  • SEO: Memastikan parameter filter atau pencarian tetap terbawa saat URL di-rewrite ke format yang lebih ramah mesin pencari.
  • Integrasi Aplikasi: Saat aplikasi backend bergantung pada parameter dinamis yang dikirim melalui URL.

Tips Troubleshooting

  1. Konflik Parameter: Jika URL tujuan sudah memiliki parameter dengan nama yang sama dengan URL asli, [QSA] akan menambahkan parameter tersebut di akhir. Pastikan logika aplikasi Anda dapat menangani duplikasi kunci.
  2. Flag [L]: Selalu gunakan flag [L] (Last) bersama [QSA] untuk menghentikan pemrosesan aturan rewrite lebih lanjut jika aturan tersebut sudah terpenuhi.
  3. Debug: Gunakan RewriteLog (pada level debug) untuk melihat bagaimana Apache memproses penggabungan string jika hasil tidak sesuai ekspektasi.