Cara Membuat SEO Friendly URL di Apache Menggunakan Mod Rewrite

Membuat SEO friendly URL pada web server Apache dilakukan dengan memanfaatkan modul mod_rewrite dan file konfigurasi .htaccess. Teknik ini mengubah URL dinamis yang rumit (seperti index.php?id=123&category=news) menjadi tautan yang bersih, mudah dibaca manusia, serta disukai oleh mesin pencari seperti domain.com/news/123.

Langkah pertama yang wajib dipastikan adalah modul mod_rewrite pada server Apache Anda sudah aktif. Pada sistem berbasis Ubuntu atau Debian, modul ini diaktifkan melalui perintah terminal sudo a2enmod rewrite, diikuti dengan restart layanan web server menggunakan sudo systemctl restart apache2. Selain itu, direktori tempat file .htaccess berada harus mengizinkan fungsi override dengan mengatur AllowOverride All pada konfigurasi virtual host Apache.

Persiapan File .htaccess dan Konfigurasi Dasar

Buat file bernama .htaccess di direktori root dokumen web Anda (biasanya di dalam folder public_html atau www). Di dalam file tersebut, Anda harus mengaktifkan mesin tulis ulang URL sebelum mendefinisikan aturan pemetaan tautan.

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
</IfModule>

Perintah RewriteEngine On berfungsi untuk menyalakan fungsi manipulasi URL, sementara RewriteBase mendefinisikan direktori dasar untuk aturan-aturan di bawahnya.

Contoh Penerapan Aturan Rewrite URL

Tabel di bawah ini merangkum pola transformasi URL dinamis menjadi URL yang ramah SEO menggunakan ekspresi reguler (regex) pada Apache:

Tujuan Pengubahan URL Asli (Dinamis) URL SEO Friendly Aturan .htaccess (Syntax)
Menghilangkan ekstensi .php profil.php /profil RewriteRule ^profil$ profil.php [L]
Mengirim parameter tunggal detail.php?id=45 /artikel/45 RewriteRule ^artikel/([0-9]+)$ detail.php?id=$1 [L]
Parameter ganda (slug & id) post.php?cat=tekno&slug=apache /tekno/apache RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ post.php?cat=$1&slug=$2 [L]

Penjelasan Parameter dan Bendera (Flags) Apache

Setiap aturan RewriteRule diakhiri dengan tanda kurung siku yang berisi bendera (flags) untuk menentukan bagaimana Apache memperlakukan aturan tersebut. Bendera yang paling sering digunakan antara lain:

  • [L] (Last): Menghentikan pemrosesan aturan rewrite lebih lanjut jika aturan yang bersangkutan sudah cocok. Ini mencegah Apache memproses aturan di bawahnya yang tidak perlu.
  • [NC] (No Case): Membuat pola pencarian URL menjadi tidak sensitif terhadap huruf besar atau kecil (case-insensitive).
  • [R=301] (Redirect): Menginstruksikan browser melakukan pengalihan permanen dari URL lama ke URL baru. Sangat berguna untuk menghindari duplikasi konten di mesin pencari.

Langkah-langkah Troubleshooting Umum

Jika setelah menerapkan konfigurasi Anda mendapati error Internal Server Error (500), penyebab paling umum adalah kesalahan penulisan sintaks pada file .htaccess atau modul mod_rewrite yang belum aktif. Selalu periksa file log error Apache (biasanya terletak di /var/log/apache2/error.log) untuk melihat detail kesalahan secara spesifik.

Masalah lain yang sering terjadi adalah tautan rusak (Broken Link) pada file CSS, JavaScript, atau gambar akibat perubahan struktur direktori URL. Gunakan tag HTML <base href="https://domain.com/"> di dalam bagian <head> dokumen untuk memastikan seluruh aset memuat path absolut secara tepat.