Cara Melakukan Pengalihan Internal dengan mod_rewrite di Apache


Pada artikel ini dan selanjutnya kami akan menjelaskan cara menggunakan mod_rewrite, untuk memetakan permintaan HTTP tertentu ke halaman lain di situs web, atau ke URL eksternal.

Dengan kata lain, modul Apache yang terkenal ini memungkinkan Anda mengalihkan URL ke URL lain, yang akan kami ilustrasikan melalui contoh praktis.

Bacaan yang Disarankan: 5 Tips untuk Meningkatkan Kinerja Server Web Apache Anda

CATATAN: Contoh di bawah ini mengasumsikan Anda setidaknya sudah familiar dengan Ekspresi Reguler yang Kompatibel dengan Perl (PCRE). Karena topik tersebut berada di luar cakupan artikel ini, lihat dokumen Perl 5 versi 24.0 untuk detail selengkapnya tentang PCRE.

Sebelum melanjutkan, pastikan modul penulisan ulang dimuat. Meskipun ini adalah perilaku default di CentOS dan distribusi serupa, di Debian dan turunannya Anda perlu memuatnya secara manual sebagai berikut:

a2enmod rewrite

Mengonfigurasi Apache untuk Menggunakan Modul mod_rewrite

Untuk mempermudah, mari gunakan situs default di kotak CentOS 7 (IP 192.168.0.100) untuk menjelaskan cara menggunakan mod_rewrite ( DocumentRoot: /var/www/html, file konfigurasi: /etc/httpd/conf/httpd.conf).

Agar Apache dapat menggunakan modul ini, tambahkan baris berikut ke file konfigurasi:

RewriteEngine on

Penting untuk dicatat bahwa konfigurasi ini tidak akan diwarisi oleh host virtual di kotak yang sama.

Oleh karena itu, Anda perlu menambahkan RewriteEngine untuk setiap host virtual tempat Anda ingin menggunakan aturan penulisan ulang.

Pengalihan internal: memetakan URL ke URL lain di host virtual yang sama

Pengalihan internal adalah contoh paling sederhana dari mod_rewrite. Jika Anda ingin mengalihkan semua permintaan untuk default.aspx ke index.html, tambahkan baris berikut (juga dikenal sebagai aturan penulisan ulang) di bawah RewriteEngine pada:

RewriteRule "^/default\.aspx$" "/index.html"

dan jangan lupa untuk me-restart Apache agar perubahan dapat diterapkan.

Ini mungkin berguna jika situs Anda awalnya dirancang menggunakan ASP dan kemudian diubah menjadi HTML5 biasa. Mesin pencari akan mengindeks file .aspx tetapi file tersebut tidak ada lagi.

Dalam hal ini, Anda perlu mencari cara untuk mengalihkan permintaan tersebut agar calon pengunjung Anda tidak mengalami halaman kesalahan. Untuk mengujinya, mari kita buat file HTML sederhana bernama index.html di dalam /var/www/html dengan konten berikut:

<!DOCTYPE html>
<html>
  <head>
	<meta charset="utf-8">
	<title>New site</title>
  </head>
  <body>
	<h2>Default.aspx was here, but now it's index.html</h2>
  </body>
</html>

Tanda tanda sisipan dan dolar akan menyebabkan ekspresi reguler cocok dengan string apa pun yang dimulai dengan /default dan diakhiri dengan .aspx, masing-masing.

Saran Baca: Instal Mod_Pagespeed untuk Mempercepat Kinerja Apache Hingga 10x

Sekarang luncurkan browser Anda dan arahkan ke 192.168.0.100/default.aspx. Jika semuanya berjalan sesuai harapan, Apache seharusnya menyajikan index.html sebagai gantinya.
Namun, pengguna akhir masih akan melihat default.aspx di bilah alamat yang menyebabkan perubahan menjadi transparan sepenuhnya:

Jika Anda ingin URL di bilah alamat menunjukkan bahwa server sebenarnya melayani index.html dan bukan laman bernama default.aspx, tambahkan [R, L] ke akhir aturan penulisan ulang sebagai berikut:

RewriteRule "^/default\.aspx$" "/index.html" [R,L]

Di sini [R,L] ada dua tanda opsional yang menunjukkan bahwa pengalihan HTTP lengkap harus dikeluarkan ke browser (R) dan tidak ada aturan lebih lanjut yang harus diproses:

Perhatikan bagaimana bilah alamat sekarang menampilkan index.html, seperti yang diharapkan, bukan default.aspx seperti sebelumnya.

Ringkasan

Pada artikel ini kami menjelaskan cara menggunakan mod_rewrite untuk melakukan pengalihan internal. Nantikan postingan berikutnya di mana kita akan mempelajari cara mengalihkan ke sumber daya yang telah dipindahkan ke server lain, dan cara menampilkan konten khusus berdasarkan browser pengguna. Sampai saat itu tiba, lihat dokumen Apache 2.4 untuk daftar lengkap flag penulisan ulang yang tersedia.

Seperti biasa, jangan ragu untuk menggunakan formulir komentar di bawah jika Anda memiliki pertanyaan atau masukan tentang artikel ini. Kami menantikan kabar dari Anda!