Mengubah query string (contoh: /profil.php?id=123&tab=kegiatan) menjadi clean path (contoh: /profil/123/kegiatan) merupakan standar wajib dalam pengembangan web modern. Pendekatan ini meningkatkan estetika tautan, performa search engine optimization (SEO), serta keterbacaan bagi pengguna. Proses ini dapat dieksekusi menggunakan konfigurasi peladen seperti Apache (.htaccess) atau Nginx, serta melalui sistem perutean (routing) pada kerangka kerja pemrograman seperti Express.js, Laravel, atau skrip PHP murni.
Metode Konversi Berdasarkan Lingkungan Sistem
Pemilihan metode konversi bergantung pada infrastruktur peladen web yang Anda gunakan. Tabel berikut merangkum pendekatan teknis beserta skenario penggunaannya.
| Lingkungan / Teknologi | Mekanisme Utama | Contoh Transformasi URL |
|---|---|---|
| Apache Web Server | Modul mod_rewrite & file .htaccess |
index.php?p=produk&id=5 → /produk/5 |
| Nginx Web Server | Blok try_files & arahan rewrite |
page.php?cat=news → /news |
| Node.js (Express) | Route Parameters (req.params) |
/user?name=budi → /user/budi |
| PHP Native / Modern | $_SERVER['REQUEST_URI'] parsing manual | detail.php?slug=artikel-1 → /artikel/artikel-1 |
Implementasi Teknis Menggunakan Apache (.htaccess)
Jika peladen Anda menggunakan Apache, aktifkan modul mod_rewrite lalu buat file .htaccess di direktori root dokumen web Anda. Aturan di bawah ini akan menangkap parameter jalur dan meneruskannya secara internal ke skrip penanganan utama.
RewriteEngine On
RewriteBase /
# Jangan ubah jika file atau folder aslinya benar-benar ada di server
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Ubah /profil/123 menjadi index.php?page=profil&id=123
RewriteRule ^([a-zA-Z0-9_-]+)/([0-9]+)$ index.php?page=$1&id=$2 [L,QSA]
Implementasi Teknis Menggunakan Nginx
Bagi pengguna peladen Nginx, konfigurasi ditulis langsung di dalam blok peladen (server block) pada berkas konfigurasi utama (misalnya /etc/nginx/sites-available/default).
server {
listen 80;
server_name contoh.com;
root /var/www/html;
index index.php index.html;
location / {
try_files $uri $uri/ @rewrite;
}
location @rewrite {
# Meneruskan request ke index.php dengan mempertahankan parameter
rewrite ^/([a-zA-Z0-9_-]+)/([0-9]+)$ /index.php?page=$1&id=$2 last;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
}
}
Penguraian Path di Sisi Aplikasi (PHP)
Setelah peladen mengarahkan URL bersih ke satu titik masuk (seperti index.php), Anda perlu memecah string URI di sisi kode aplikasi untuk membaca variabel yang dikirimkan.
<?php
// Mendapatkan URI yang diminta, misal: /profil/123
$request_uri = trim($_SERVER['REQUEST_URI'], '/');
$segments = explode('/', $request_uri);
// Menetapkan variabel berdasarkan posisi segmen
$page = isset($segments[0]) ? htmlspecialchars($segments[0]) : 'home';
$id = isset($segments[1]) ? intval($segments[1]) : 0;
echo "Halaman: " . $page;
echo "ID: " . $id;
?>
Tips Troubleshooting Lapangan
Kendala yang sering muncul saat mengubah query string menjadi path adalah masalah jalur relatif aset (CSS, JavaScript, dan Gambar). Ketika URL diakses melalui /kategori/detail-item, browser akan mencoba memuat aset relatif dari folder /kategori/ alih-alih dari root.
Untuk mengatasi hal ini, pastikan Anda selalu menggunakan tag <base href="https://namadomain.com/"> di dalam bagian <head> dokumen HTML, atau gunakan jalur absolut mutlak (diawali dengan garis miring /) pada setiap pemanggilan sumber daya aset statis.