Mengimpor Aturan mod_rewrite Apache
oleh Ruslan Yakushev
Pengantar
Modul Penulisan Ulang URL di IIS 7 ke atas menyediakan fitur impor yang sangat menyederhanakan proses konversi aturan Apache mod_rewrite ke aturan penulisan ulang URL IIS. Dalam panduan ini, Anda menggunakan fitur Aturan Impor yang disediakan dalam Modul Penulisan Ulang URL untuk mengimpor beberapa aturan mod_rewrite ke dalam file konfigurasi IIS. Jika Anda belum mengunduh Modul Penulisan Ulang URL, Anda dapat melakukannya di https://www.iis.net/downloads/microsoft/url-rewrite.
Menyiapkan Skenario Penelusuran
Untuk melihat bagaimana Anda dapat mengonversi aturan mod_rewrite dan memverifikasi bahwa aturan yang dikonversi berfungsi dengan benar, Anda akan menerapkan skenario umum untuk memberlakukan nama host kanonis untuk situs Web. Dalam contoh ini, Anda akan memaksa penggunaan alih-alih www.mysite.com
mysite.com
, sehingga ketika permintaan dibuat yang menggunakan nama host selain www.mysite.com
, Anda dapat mengalihkan permintaan ke nama host kanonis.
Mulai Manajer IIS, lalu klik Situs Web Default.
Di panel Tindakan, klik Pengikatan, dan tambahkan pengikatan http baru untuk port 8088.
Gambar 1: Tambahkan pengikatan baru
Menggunakan Notepad, buka
%SystemDrive%\windows\system32\drivers\etc\hosts
dan tambahkan dua baris berikut di akhir file:127.0.0.1 www_mysite_com 127.0.0.1 mysite_com
Perhatikan bahwa Anda menggunakan "_" alih-alih "." untuk pemisah domain. Ini untuk mencegah browser Web mencoba mengatasi nama domain dengan menggunakan server Sistem Nama Domain (DNS).
Simpan file host.
Verifikasi bahwa nama host disiapkan dengan benar dengan membuka browser Web dan masuk ke situs
http://www_mysite_com/iisstart.htm
dan kehttp://mysite_com/iisstart.htm
.
Mengonversi Aturan mod_rewrite
Aturan Apache mod_rewrite yang digunakan untuk memberlakukan nama host kanonis adalah:
#For sites running on a port other than 80:
RewriteCond %{HTTP_HOST} !^www_mysite_com [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{SERVER_PORT} !^80$
RewriteRule ^/(.*) http://www_mysite_com:%{SERVER_PORT}/$1 [L,R]
#And for a site running on port 80
RewriteCond %{HTTP_HOST} !^www_mysite_com [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^/(.*) http://www_mysite_com/$1 [L,R]
Untuk mengonversi aturan ini ke format khusus penulisan ulang URL IIS:
Mulai Manajer IIS.
Di sebelah kiri, di panel Koneksi, pilih Situs Web Default.
Di sebelah kanan, di Tampilan Fitur, klik Penulisan Ulang URL.
Gambar 2: Klik Penulisan Ulang URL
Di sebelah kanan, di panel Tindakan, klik Impor Aturan.
Salin contoh mod_rewrite aturan di atas dan tempelkan ke dalam kotak teks Refrite aturan .
Gambar 3: Aturan untuk diimpor
Tab Tampilan Pohon dari kotak Aturan yang Dikonversi langsung memperlihatkan hasil konversi. Anda juga dapat mengklik tab Tampilan XML untuk melihat bagaimana aturan disimpan dalam file Web.config.
Gambar 4: Aturan yang dikonversi
Jika Anda beralih kembali ke Tampilan Pohon dan memilih simpul di sana, direktif aturan mod_rewrite terkait dalam kotak teks Rewrite aturan akan disorot.
Gambar 5: Tampilan pohon
Perhatikan bahwa selama konversi aturan, aturan diberi nama default. Untuk mengubah nama default menjadi sesuatu yang lebih bermakna, pilih aturan di Tampilan Pohon, klik kanan, dan pilih Ganti Nama dari menu konteks.
Gambar 6: Ganti Nama
Ubah nama aturan pertama dari ImportedRule1 menjadi Alihkan ke www_mysite_com:non-80. Ubah nama aturan kedua dari ImportedRule2 menjadi Dialihkan ke www_mysite_com:80.
Di panel Tindakan, klik Terapkan untuk menyimpan aturan yang dikonversi ke file Web.config, lalu klik Kembali ke aturan.
Gambar 7: Kembali ke Aturan
Menguji Aturan yang Dikonversi
Untuk menguji bahwa aturan yang diimpor dari format mod_rewrite berfungsi dengan benar, buka browser Web, dan buka salah satu URL berikut:
http://localhost/iisstart.htm
http://mysite_com/iisstart.htm
Dalam kedua kasus, browser Web dialihkan ke http://www_mysite_com/iisstart.htm
.
Selain itu, jika Anda mencoba salah satu URL ini:
http://localhost:8088/iisstart.htm
http://mysite_com:8088/iisstart.htm
Browser Web akan dialihkan ke http://www_mysite_com:8088/iisstart.htm
.
Perhatikan bahwa aturan yang diimpor dari mod_rewrite mengaktifkan penerapan nama host kanonis untuk situs Web. Pencarian Bing akan mengungkapkan contoh aturan apache mod_rewrite lainnya.
Pengelakan
PENTING - Modul Penulisan Ulang URL mencoba mengonversi aturan Apache mod_rewrite ke aturan penulisan ulang URL IIS yang setara secara fungsional. Namun, tidak semua aturan mod_rewrite dapat dikonversi karena perbedaan arsitektur antara Apache dan IIS. Sangat disarankan agar Anda mempelajari aturan mod_rewrite yang ditetapkan sampai Anda memahami fungsionalitasnya sebelum memulai proses konversi. Kemudian, setelah mengonversi ke aturan penulisan ulang URL IIS, tinjau dan uji hasil konversi untuk memastikan bahwa seperangkat aturan penulisan ulang IIS yang sesuai menyediakan logika penulisan ulang URL yang sama.
Perhatikan bahwa hanya aturan yang mengikuti sintaks apache mod_rewrite yang dapat dikonversi. Format aturan penulisan ulang lainnya (misalnya, ISAPI_Rewrite, Penulisan Ulang ISAPI Ionik, IISRewrite, dan lainnya) tidak dikenali atau akan dikonversi dengan salah.
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk