Troubleshooting .htaccess rewrite mencakup pemeriksaan direktif RewriteEngine On, modul Apache mod_rewrite yang belum aktif, serta konflik ekspresi reguler (regex) yang menyebabkan 500 Internal Server Error atau Too many redirects. Permasalahan ini umumnya bersumber dari salah konfigurasi RewriteCond atau bendera (flags) yang tidak sesuai.
Untuk mengatasi masalah URL rewriting pada web server Apache, diperlukan pemahaman mendalam mengenai sintaks, struktur kondisi, dan tata letak aturan di dalam file tersembunyi .htaccess.
Tabel Permasalahan Umum dan Solusi Htaccess Rewrite
| Gejala Error | Penyebab Utama | Solusi Teknis |
|---|---|---|
| 500 Internal Server Error | Sintaks salah atau mod_rewrite non-aktif |
Cek error log server, pastikan modul Apache aktif |
| Too Many Redirects (ERR_TOO_MANY_REDIRECTS) | Infinite loop pada aturan redirect HTTP ke HTTPS | Tambahkan kondisi pengecekan SSL yang spesifik |
| 404 Not Found pada URL Cantik | Base URL salah atau RewriteBase belum diset |
Definisikan RewriteBase / secara eksplisit |
Langkah Teknis Troubleshooting Htaccess Rewrite
1. Memastikan Modul Apache Aktif
Sebelum melakukan debugging pada file .htaccess, pastikan server web Apache telah memuat modul mod_rewrite. Pada lingkungan Ubuntu/Debian, jalankan perintah terminal berikut:
sudo a2enmod rewrite
sudo systemctl restart apache2
Selain itu, pastikan konfigurasi virtual host Anda mengizinkan override pada direktori root dengan mengubah baris AllowOverride None menjadi AllowOverride All.
2. Mengatasi Infinite Loop pada HTTPS
Kesalahan paling sering terjadi adalah pengalihan (redirect) tanpa henti antara HTTP dan HTTPS. Gunakan blok kode berikut untuk mencegah loop tersebut:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
3. Menangani Masalah URL Rewriting dan Query String
Secara default, query string lama akan ditambahkan ke URL baru. Jika Anda ingin menghapusnya atau menggabungkannya secara benar, gunakan bendera [QSA] (Query String Append) dan [L] (Last):
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^profile/([a-zA-Z0-9_-]+)$ profile.php?user=$1 [QSA,L]
Tips Lapangan untuk Debugging Cepat
Jika situs web Anda mengalami gangguan setelah mengubah file .htaccess, lakukan langkah-langkah berikut secara berurutan:
- Ganti nama file
.htaccesssementara melalui FTP atau File Manager untuk mengonfirmasi apakah error berasal dari file tersebut. - Periksa file error log Apache (biasanya terletak di
/var/log/apache2/error.log) untuk melihat baris spesifik yang memicu kegagalan sintaks. - Gunakan flag
[R=302,L]untuk pengujian sementara alih-alih[R=301,L]guna menghindari caching permanen pada browser lokal Anda.