Apache RedirectMatch

Kamas Muhammad <kamas@lc.vlsm.org>


Tidak ada copyright apapun dalam dukumen ini, anda bebas menyalin, mencetak, maupun memodifikasi. Saran, koreksi, kritik, kesalahan ketik, maupun ucapan silakan dikirimkan ke email tersebut diatas. Terima Kasih.

Pertama kali melihat keyword itu di konfigurasi apache, saya langsung berpikir: "Nyapo kok ono konfig kuwi yah? Wong ya akhire gur dibuak nang direktori maneh, isine gur 1 file." Ternyata beberapa hari yang lalu konfig itu gunanya jadi terasa sekali.

Ketika itu ada aplikasi yang dijalankan oleh tomcat, tapi harus dibuat sedemikian rupa sehingga akses dilakukan ke apache. Skenario ini diperlukan karena apache sudah bind *:80 dan tomcat bind ke *:8180. URL yang diinginkan untuk aplikasi ini anggap saja http://daftar.minuman.com, sedangkan biasanya aplikasi tersebut diakses menggunakan alamat http://server.minuman.com:8180/aplic/.

Untuk itu, modul proxy apache diaktifkan, kemudian dikonfigurasi untuk melakukan proxying ke URL yang diinginkan. Awalnya, beginilah konfigurasinya:

<VirtualHost *:80>
	...
	ProxyRequests off
	ProxyPass / http://127.0.0.1:8180/aplic/
	ProxyPassReverse / http://127.0.0.1:8180/aplic/
	...
</VirtualHost>

Setelah dijalankan, ternyata gambar-gambarnya tidak keluar. Setelah diusut, ternyata src gambar-gambar yang ada di web itu ditautkan secara absolut, termasuk ke direktori aplikasi (misal: src="/aplic/gbr/entah.jpg"). Andai saja gambar itu dimasukkan secara relatif (misal: src="gbr/entah.jpg"), maka harusnya langsung keluar saja.

Di sinilah konfigurasi RedirectMatch diperlukan. Bila pengguna membuka halaman "/", maka pengguna akan dilempar ke dalam direktori /aplic, sehingga browser dapat mengambil file gambar yang tepat. Konfigurasi di atas kemudian dimodifikasi sedikit seperti berikut:

<VirtualHost *:80>
	...
	ProxyRequests off
	ProxyPass / http://127.0.0.1:8180/
	ProxyPassReverse / http://127.0.0.1:8180/
	<Location />
		RedirectMatch ^/$ /aplic/
	</Location>
	...
</VirtualHost>

Konfigurasi di atas secara implisit menyatakan bahwa apabila alamat yang diakses oleh pengguna hanya "/", maka browser akan di-redirect ke /aplic/.

Setelah reload apache, aplikasi tersebut akhirnya berjalan dengan baik.


Kasus di atas adalah salah satu contoh sederhana penggunaan konfigurasi RedirectMatch, yang kebetulan saya dapatkan di jaringan konsumen saya pada tahun 2008. Alternatif lain untuk mencapai hasil yang diinginkan adalah dengan membuat file baru di RootDirectory Tomcat yang melempar pengguna ke direktori /aplic. Kalau cara ini diambil, maka yang harus mikir ya... yang bikin program :D

Directive ini sendiri merupakan bawaan dari mod_alias yang didesain untuk menangani manipulasi URL sederhana. Untuk urusan manipulasi yang lebih rumit, gunakan modul lain yaitu mod_rewrite.