URL Rewriting pada PHP adalah teknik untuk mengubah struktur URL yang panjang dan kompleks menjadi tautan yang bersih, mudah dibaca manusia, dan ramah mesin pencari (SEO-friendly). Proses ini umumnya memanfaatkan modul mod_rewrite pada server web Apache melalui file konfigurasi .htaccess yang dipadukan dengan pengambilan parameter menggunakan variabel global $_GET di dalam script PHP.
Dalam implementasi standar, sebuah halaman detail produk biasanya diakses menggunakan URL dinamis seperti index.php?page=detail&id=123. Dengan teknik URL Rewriting, alamat tersebut dapat disederhanakan menjadi produk/123/nama-produk tanpa mengubah logika pemrosesan data di sisi backend PHP.
Persiapan dan Syarat Sistem
Sebelum menerapkan teknik rewriting, pastikan server web Anda telah memenuhi beberapa persyaratan teknis utama agar modul dapat berjalan tanpa kendala.
| Komponen | Keterangan | Status Wajib |
|---|---|---|
| Web Server Apache | Mendukung modul konfigurasi direktori | Ya |
Modul mod_rewrite |
Modul Apache untuk manipulasi URL | Aktif |
Direktif AllowOverride |
Diatur ke All pada blok direktori konfigurasi Apache |
Ya |
File .htaccess |
Ditempatkan di root direktori website | Ya |
Langkah Konfigurasi .htaccess
Buat sebuah file baru bernama .htaccess di direktori utama aplikasi web Anda. Masukkan aturan dasar untuk mengaktifkan mesin rewriting dan mengarahkan seluruh permintaan ke file pengendali utama, misalnya index.php.
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
# Mengabaikan file atau folder yang benar-benar ada di server
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Mengarahkan pola URL ke index.php dengan parameter
RewriteRule ^halaman/([a-zA-Z0-9_-]+)$ index.php?page=$1 [L,QSA]
RewriteRule ^produk/([0-9]+)/?$ index.php?modul=produk&id=$1 [L,QSA]
Penangkapan Parameter dengan PHP
Setelah aturan pada file .htaccess aktif, server akan meneruskan nilai variabel ke script PHP. Anda dapat menangkap nilai tersebut menggunakan array superglobal $_GET seperti biasa.
<?php
// File: index.php
$halaman = isset($_GET['page']) ? $_GET['page'] : 'beranda';
$id_produk = isset($_GET['id']) ? intval($_GET['id']) : 0;
if ($halaman == 'beranda') {
echo "<h1>Selamat Datang di Beranda</h1>";
} elseif ($id_produk > 0) {
echo "<h1>Menampilkan Produk dengan ID: " . $id_produk . "</h1>";
} else {
echo "<h1>Halaman Tidak Ditemukan</h1>";
}
?>
Troubleshooting Masalah Umum
Beberapa kendala sering terjadi saat pertama kali menerapkan URL Rewriting pada lingkungan pengembangan lokal maupun server produksi:
- Error 500 Internal Server Error: Biasanya disebabkan oleh kesalahan sintaks di dalam file
.htaccessatau modulmod_rewritebelum aktif di konfigurasi utama Apache (httpd.conf). - Error 404 Not Found: Terjadi karena direktif
AllowOverridepada server Apache masih bernilaiNone, sehingga file.htaccessdiabaikan oleh sistem. - CSS dan Gambar Rusak: Penggunaan path relatif pada file aset (gambar, CSS, JavaScript) sering gagal setelah URL diubah. Gunakan tag
<base>atau tentukan path absolut berbasis root domain.