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.commysite.com, sehingga ketika permintaan dibuat yang menggunakan nama host selain www.mysite.com, Anda dapat mengalihkan permintaan ke nama host kanonis.

  1. Mulai Manajer IIS, lalu klik Situs Web Default.

  2. Di panel Tindakan, klik Pengikatan, dan tambahkan pengikatan http baru untuk port 8088.

    Cuplikan layar dialog Pengikatan Situs setelah mengklik Pengikatan di bawah Edit Situs di panel Tindakan.Gambar 1: Tambahkan pengikatan baru

  3. 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).

  4. Simpan file host.

  5. Verifikasi bahwa nama host disiapkan dengan benar dengan membuka browser Web dan masuk ke situs http://www_mysite_com/iisstart.htm dan ke http://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:

  1. Mulai Manajer IIS.

  2. Di sebelah kiri, di panel Koneksi, pilih Situs Web Default.

  3. Di sebelah kanan, di Tampilan Fitur, klik Penulisan Ulang URL.

    Cuplikan layar panel Beranda Situs Web Default dengan Penulisan Ulang U R L dipilih.

    Gambar 2: Klik Penulisan Ulang URL

  4. Di sebelah kanan, di panel Tindakan, klik Impor Aturan.

  5. Salin contoh mod_rewrite aturan di atas dan tempelkan ke dalam kotak teks Refrite aturan .

    Cuplikan layar panel Impor aturan penulisan ulang mod underscore dengan sekumpulan aturan Penulisan Ulang dan sekumpulan aturan yang berhasil Dikonversi.

    Gambar 3: Aturan untuk diimpor

  6. 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.

    Cuplikan layar beralih antara Tampilan Pohon dan Tampilan X M L di bagian Aturan yang dikonversi.

    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.

    Cuplikan layar simpul yang dipilih dalam Tampilan Pohon dari aturan Yang Dikonversi.

    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.

    Cuplikan layar mengeklik kanan aturan Yang Dikonversi untuk Mengganti nama aturan.

    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.

    Cuplikan layar panel Tindakan dengan Terapkan, Batalkan, dan Kembali ke Aturan yang ditekankan.

    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.