Menguasai Pengalihan dengan mod_rewrite di Apache

Jika Anda mengelola situs web yang memerlukan pengalihan lalu lintas dari satu domain ke domain lain sambil tetap mempertahankan akses ke jalur tertentu, mod_rewrite di Apache bisa menjadi teman terbaik Anda. Dalam postingan ini, kita akan membahas cara mengalihkan semua permintaan kecuali satu jalur tertentu, seperti /audio, dengan menggunakan mod_rewrite.

Masalahnya

Banyak pengelola situs web menemukan diri mereka dalam situasi di mana mereka perlu mengalihkan lalu lintas ke domain baru, tetapi ingin memungkinkan permintaan tertentu untuk tetap berjalan tanpa perubahan. Misalnya, jika Anda sedang bertransisi dari mydomain.example ke newdomain.example, dan Anda ingin semua lalu lintas dialihkan kecuali permintaan untuk /audio, itulah ketika mod_rewrite berperan.

Masalah Sintaks yang Umum

Upaya awal yang dilakukan oleh seorang pengguna untuk mengatur pengalihan termasuk penggunaan kompleks dari ekspresi reguler dan kondisi lanjutan. Meskipun niatnya benar, menggunakan HTTP_HOST dalam RewriteCond kurang tepat karena tidak mencakup jalur permintaan.

Solusinya

Untuk mencapai pengalihan yang diinginkan sambil memungkinkan akses ke jalur /audio, konfigurasi Apache Anda harus diatur sebagai berikut:

Konfigurasi Langkah demi Langkah

  1. Aktifkan Rewrite Engine: Pertama, pastikan bahwa mesin pengalihan diaktifkan.

    RewriteEngine on
    
  2. Atur Kondisi: Gunakan variabel REQUEST_URI untuk memeriksa apakah permintaan TIDAK untuk jalur /audio.

    RewriteCond %{REQUEST_URI} !^/audio
    
  3. Tentukan Aturan Rewrite: Buat aturan yang menangani pengalihan ke domain baru.

    RewriteRule ^(.*)$ http://www.newdomain.example [L,R=301]
    

Menggabungkan Semuanya

Dalam konfigurasi VirtualHost Anda, seharusnya terlihat seperti ini:

<VirtualHost *:80>
    ServerAdmin me@mydomain.example
    DocumentRoot "/var/www/mydomain.example/htdocs"
    ServerName www.mydomain.example
    ServerAlias mydomain.example

    RewriteEngine on
    RewriteCond %{REQUEST_URI} !^/audio
    RewriteRule ^(.*)$ http://www.newdomain.example [L,R=301]

    RewriteLog /path/to/log/file
    RewriteLogLevel 3

    ErrorLog logs/error_log
    CustomLog logs/access_log common
</VirtualHost>

Memecahkan Masalah Konfigurasi Anda

Jika Anda masih mengalami masalah setelah mengatur ini, pertimbangkan untuk mengaktifkan logging untuk melihat kondisi dan aturan yang bekerja:

  • Gunakan RewriteLog untuk menentukan file log dan atur tingkat log cukup tinggi untuk menangkap detail relevan.
RewriteLog /path/to/log/file
RewriteLogLevel 3

Memahami Log

Saat Anda memeriksa log setelah menerapkan aturan di atas, pastikan bahwa permintaan ke /audio TIDAK mengenai aturan rewrite.

Kesimpulan

Mengatur pengalihan URL menggunakan mod_rewrite adalah cara yang ampuh untuk mengelola lalu lintas sambil memastikan jalur tertentu tetap dapat diakses. Dengan fokus pada konfigurasi yang benar dan memahami perilaku REQUEST_URI, Anda dapat menyelesaikan masalah terkait pengalihan yang tidak diinginkan dengan efektif.

Dengan panduan ini, Anda sekarang diperlengkapi untuk menangani pengalihan URL di Apache dengan percaya diri. Selamat coding!