Melakukan pengalihan (redirect) untuk halaman berformat Server Side Includes (.shtml) menggunakan modul mod_rewrite pada web server Apache memerlukan aturan sintaks khusus agar tidak terjadi perulangan pengalihan (infinite loop) atau kegagalan pemuatan file SSI. Kebutuhan ini biasanya muncul saat situs web mengalami restrukturisasi direktori atau migrasi ekstensi file lama ke format baru seperti .html atau pemindahan ke domain utama.
Secara teknis, mod_rewrite bekerja dengan mencocokkan pola URL (Regular Expressions) sebelum Apache memproses eksekusi SSI. Jika Anda salah menempatkan kondisi pencocokan, server dapat mengalami beban berlebih akibat loop internal. Berikut adalah panduan teknis penerapan aturan mod_rewrite yang valid dan siap diterapkan pada file .htaccess Anda.
Sintaks Dasar Mod Rewrite untuk SHTML
Untuk mengarahkan seluruh permintaan dari file dengan ekstensi .shtml ke halaman baru atau ekstensi lain, Anda harus mengaktifkan mesin rewrite terlebih dahulu dan memastikan modul terkait aktif di server Apache Anda. Berikut adalah contoh kode konfigurasi nyata yang ditempatkan di dalam file .htaccess pada root direktori:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# Mencegah loop jika file yang dituju sama
RewriteCond %{ENV:REDIRECT_STATUS} ^$
# Mengarahkan file lama.shtml ke halamanbaru.html
RewriteRule ^lama\.shtml$ /halamanbaru.html [R=301,L]
</IfModule>
Matriks Perbandingan Metode Redirect Apache
| Metode | Keunggulan | Kekurangan | Rekomendasi Kasus |
|---|---|---|---|
Redirect 301 |
Sintaks sangat sederhana dan mudah dibaca. | Kurang fleksibel untuk manipulasi pola URL kompleks atau regex lanjutan. | Pengalihan file tunggal sederhana tanpa parameter. |
mod_rewrite |
Sangat fleksibel, mendukung kondisi lingkungan, query string, dan regex. | Rawan salah konfigurasi yang menyebabkan infinite loop jika tidak hati-hati. | Mengubah ekstensi massal (misal .shtml ke .html) atau struktur direktori rumit. |
| Alias / RedirectMatch | Cepat karena dieksekusi di level server utama (httpd.conf). | Membutuhkan akses root server, tidak bisa diatur via .htaccess lokal. | Pengelolaan server dedicated dengan kontrol penuh. |
Langkah Teknis Implementasi Massal SHTML ke HTML
Jika Anda ingin mengalihkan seluruh file berakhiran .shtml ke ekstensi .html secara otomatis tanpa harus menulis satu per satu baris aturan untuk setiap halaman, gunakan pola regex dinamis berikut:
- Buka akses direktori server Anda melalui FTP atau File Manager cPanel.
- Cari atau buat file bernama
.htaccessdi direktori utama (biasanya di dalam folderpublic_html). - Tambahkan blok kode di bawah ini pada bagian paling atas file
.htaccessuntuk memastikan aturan dibaca sebelum aturan lain:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{THE_REQUEST} \.shtml\s [NC]
RewriteRule ^(.*)\.shtml$ /$1.html [R=301,L]
</IfModule>
- Simpan perubahan file tersebut dan lakukan pengujian melalui peramban web atau gunakan alat pemeriksa HTTP header online untuk memastikan status yang dikembalikan adalah
HTTP/1.1 301 Moved Permanently.
Troubleshooting Masalah Umum Lapangan
Kesalahan paling sering terjadi saat menerapkan aturan rewrite pada file .shtml adalah munculnya galat Internal Server Error (500). Hal ini umumnya disebabkan oleh modul mod_rewrite yang belum diaktifkan pada tingkat konfigurasi virtual host Apache Anda, atau sintaks penulisan regular expression yang keliru pada file .htaccess.
Pastikan juga direktori Anda mengizinkan penggunaan file .htaccess melalui arahan AllowOverride All di dalam konfigurasi utama Apache (httpd.conf atau berkas konfigurasi domain terkait). Jika Anda mendapati masalah perulangan pengalihan (Too many redirects), pastikan kondisi RewriteCond %{ENV:REDIRECT_STATUS} disertakan untuk menghentikan siklus redirect berlapis.