Bagikan melalui


Membuat Aturan Penulisan Ulang untuk Modul Penulisan Ulang URL

oleh Ruslan Yakushev

Modul penulisan ulang URL adalah ekstensi untuk IIS yang tersedia sebagai unduhan untuk Server IIS Anda yang berdiri sendiri, dan juga telah diinstal sebelumnya di situs web apa pun di Windows Azure Web Sites (WAWS) dan tersedia untuk Anda gunakan. Panduan ini akan memandu Anda melalui cara membuat dan menguji serangkaian aturan penulisan ulang untuk Modul Penulisan Ulang URL.

Prasyarat

Panduan ini memerlukan prasyarat berikut:

  1. IIS 7 atau lebih tinggi dengan layanan peran ASP.NET diaktifkan.
  2. Modul Penulisan Ulang URL terinstal. Untuk informasi selengkapnya, lihat Menggunakan Modul Penulisan Ulang URL.

Menyiapkan halaman Web uji

Untuk menunjukkan cara kerja Modul Penulisan Ulang URL, kami akan menggunakan halaman ASP.NET pengujian sederhana. Halaman ini membaca variabel server Web dan mengeluarkan nilainya di browser.

Salin kode ASP.NET berikut dan masukkan ke folder %SystemDrive%\inetpub\wwwroot\ dalam file bernama article.aspx:

<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>URL Rewrite Module Test</title>
</head>
<body>
      <h1>URL Rewrite Module Test Page</h1>
      <table>
            <tr>
                  <th>Server Variable</th>
                  <th>Value</th>
            </tr>
            <tr>
                  <td>Original URL: </td>
                  <td><%= Request.ServerVariables["HTTP_X_ORIGINAL_URL"] %></td>
            </tr>
            <tr>
                  <td>Final URL: </td>
                  <td><%= Request.ServerVariables["SCRIPT_NAME"] + "?" + Request.ServerVariables["QUERY_STRING"] %></td>
            </tr>
      </table>
</body>
</html>

Setelah menyalin file ini, telusuri http://localhost/article.aspx dan periksa apakah halaman telah dirender dengan benar di browser.

Membuat aturan penulisan ulang

Kami akan membuat aturan penulisan ulang sederhana yang akan menulis ulang URL menggunakan format berikut:

http://localhost/article/342/some-article-title
ke:
http://localhost/article.aspx?id=342&title=some-article-title.

Kami akan membuat aturan penulisan ulang dengan menggunakan URL Rewrite UI di IIS Manager. Untuk melakukan ini, ikuti langkah-langkah berikut:

  1. Buka Manajer IIS.
  2. Pilih Situs Web Default.
  3. Di Tampilan Fitur klik Penulisan Ulang URL.
    Cuplikan layar yang memperlihatkan panel Beranda Situs Web Default. Penulisan Ulang U R L dipilih.
  4. Di panel Tindakan di sisi kanan, klik Tambahkan aturan...
    Cuplikan layar yang memperlihatkan panel Penulisan Ulang U R L.
  5. Dalam kotak dialog Tambahkan Aturan , pilih Aturan Kosong dan klik OK.
    Cuplikan layar yang memperlihatkan kotak dialog Tambahkan Aturan.

Sekarang Anda harus menentukan aturan penulisan ulang yang sebenarnya. Dalam Modul Penulisan Ulang URL, aturan penulisan ulang ditentukan dengan menentukan empat informasi yang diperlukan:

  • Nama aturan.
  • Pola yang digunakan untuk mencocokkan string URL.
  • Serangkaian kondisi opsional.
  • Tindakan yang harus dilakukan jika pola cocok dan apakah semua pemeriksaan kondisi berhasil.

Penamaan aturan

Dalam kotak teks Nama , masukkan nama yang akan mengidentifikasi aturan secara unik, misalnya: "Tulis ulang ke article.aspx".

Cuplikan layar yang memperlihatkan panel Edit Aturan Masuk.

Menentukan pola

Dalam kotak teks Pola , masukkan string berikut ini:

^article/([0-9]+)/([_0-9a-z-]+)

String ini adalah ekspresi reguler yang menentukan bahwa pola akan cocok dengan string URL apa pun yang memenuhi kondisi berikut:

  1. Dimulai dengan urutan karakter "artikel/".
  2. Berisi satu atau beberapa karakter numerik setelah "/" pertama.
  3. Berisi satu atau beberapa karakter alfanumerik atau "_" atau "-" setelah "/" kedua.

Perhatikan bahwa bagian tertentu dari ekspresi reguler berada dalam tanda kurung. Tanda kurung ini membuat grup pengambilan, yang nantinya dapat direferensikan dalam aturan dengan menggunakan referensi kembali.

Menentukan tindakan

Karena aturan yang kita buat seharusnya menulis ulang URL, pilih jenis tindakan Penulisan ulang yang tercantum dalam kotak Grup tindakan. Di kotak teks Tulis Ulang URL: , masukkan string berikut:

article.aspx?id={R:1}&title={R:2}

String ini menentukan nilai baru tempat URL input harus ditulis ulang. Perhatikan bahwa untuk nilai parameter string kueri yang kami gunakan {R:1} dan {R:2}, yang merupakan referensi balik ke grup pengambilan yang ditentukan dalam pola aturan dengan menggunakan tanda kurung.

Biarkan nilai default untuk semua pengaturan lainnya. Halaman properti Edit Aturan Masuk akan terlihat seperti halaman berikut ini:

Cuplikan layar yang memperlihatkan halaman properti Edit Aturan Masuk.

Simpan aturan dengan mengklik Terapkan di sisi kanan.

Menampilkan aturan penulisan ulang dalam file konfigurasi

Aturan penulisan ulang disimpan baik dalam file ApplicationHost.config atau dalam file Web.config. Untuk memeriksa konfigurasi aturan yang baru saja kita buat, buka file Web.config yang terletak di %SystemDrive%\inetpub\wwwroot. Dalam file ini Anda akan melihat bagian <rewrite> yang berisi definisi aturan ini:

<rewrite>
  <rules>
    <rule name="Rewrite to article.aspx">
      <match url="^article/([0-9]+)/([_0-9a-z-]+)" />
      <action type="Rewrite" url="article.aspx?id={R:1}&amp;title={R:2}" />
    </rule>
  </rules>
</rewrite>

Sintaks di atas juga berlaku untuk mengonfigurasi Penulisan Ulang URL di Web.config di Windows Azure Web Sites (WAWS).

Menguji aturan penulisan ulang

Untuk menguji bahwa aturan menulis ulang URL dengan benar, buka browser Web dan minta URL berikut:

http://localhost/article/234/some-title

Anda akan melihat bahwa aturan penulisan ulang di server Web Anda telah mengubah URL asli menjadi Article.aspx dan telah melewati "234" dan "beberapa judul" sebagai nilai untuk parameter string kueri.

Cuplikan layar yang memperlihatkan Halaman Uji Modul Penulisan Ulang U R L di Internet Explorer.

Membuat aturan pengalihan

Sekarang kita akan membuat aturan pengalihan yang akan mengalihkan semua URL dalam format berikut:

http://localhost/blog/some-other-title/543
ke format berikut:
http://localhost/article/543/some-other-title

Aturan pengalihan memungkinkan lebih dari satu URL untuk menunjuk ke satu halaman Web.

Untuk melakukan ini, buka UI tampilan fitur Penulisan Ulang URL di Manajer IIS. Klik Tambahkan Aturan..., lalu pilih templat Aturan Kosong lagi.

Dalam halaman Edit Aturan , masukkan yang berikut ini:

  • Nama: Alihkan dari blog (Ini adalah nama unik untuk aturan.)
  • Pola: ^blog/([_0-9a-z-]+)/([0-9]+) (Pola ini akan cocok dengan string URL yang dimulai dengan "blog" dan menangkap segmen URL kedua dan ketiga ke dalam referensi belakang.)
  • Tindakan: Pengalihan (Tindakan pengalihan akan menyebabkan respons pengalihan dikirim kembali ke browser.)
  • URL Pengalihan: artikel/{R:2}/{R:1} (String pengganti ini akan digunakan sebagai URL pengalihan; perhatikan bahwa ia menggunakan referensi balik untuk mempertahankan dan mengatur ulang potongan URL asli yang diambil selama kecocokan pola.)

Masukkan nama, pola, dan tindakan seperti yang ditunjukkan di bawah ini:

Cuplikan layar yang memperlihatkan panel Edit Aturan Masuk. Ada entri baru untuk nama, pola, dan tindakan.

Masukkan URL pengalihan seperti yang ditunjukkan di bawah ini:

Cuplikan layar yang memperlihatkan panel Edit Aturan Masuk. Di bawah Jenis tindakan, pengalihan telah dipilih dan U R L Pengalihan dimasukkan.

Biarkan nilai default untuk semua pengaturan lainnya. Simpan aturan dengan mengklik Terapkan di sisi kanan.

Menguji aturan pengalihan

Untuk menguji apakah aturan mengalihkan permintaan dengan benar, buka browser Web dan minta URL berikut:

http://localhost/blog/some-other-title/323

Anda akan melihat bahwa browser dialihkan sebagai http://localhost/article/323/some-other-title akibat dari eksekusi aturan pengalihan dan kemudian permintaan ditulis ulang sesuai dengan aturan penulisan ulang yang telah Anda buat sebelumnya.

Cuplikan layar yang memperlihatkan Internet Explorer di Halaman Uji Modul Penulisan Ulang U R L.

Membuat aturan blok akses

Aturan ketiga yang akan kita buat digunakan untuk memblokir semua permintaan yang dibuat ke situs Web jika permintaan tersebut tidak memiliki kumpulan header host. Jenis aturan ini berguna ketika Anda ingin mencegah upaya peretasan yang dilakukan dengan mengeluarkan permintaan HTTP terhadap alamat IP server alih-alih menggunakan nama host.

Kami akan membuat aturan ini tanpa menggunakan Manajer IIS. Buka file Web.config di %SystemDrive%\inetpub\wwwroot\ folder yang Anda gunakan untuk file uji article.aspx di awal artikel ini. Cari bagian <rewrite>. Sisipkan aturan berikut ke <dalam kumpulan aturan> , sehingga merupakan aturan pertama dalam koleksi:

<rule name="Fail bad requests">
  <match url=".*"/>
  <conditions>
    <add input="{HTTP_HOST}" pattern="localhost" negate="true" />
  </conditions>
  <action type="AbortRequest" />
</rule>

Bagian <rewrite> akan terlihat seperti kode berikut:

<rewrite>
  <rules>
    <rule name="Fail bad requests">
      <match url=".*"/>
      <conditions>
        <add input="{HTTP_HOST}" pattern="localhost" negate="true" />
      </conditions>
      <action type="AbortRequest" />
    </rule>
    <rule name="Redirect from blog">
      <match url="^blog/([_0-9a-z-]+)/([0-9]+)" />
      <action type="Redirect" url="article/{R:2}/{R:1}" redirectType="Found" />
    </rule>
    <rule name="Rewrite to article.aspx">
      <match url="^article/([0-9]+)/([_0-9a-z-]+)" />
      <action type="Rewrite" url="article.aspx?id={R:1}&amp;title={R:2}" />
    </rule>
  </rules>
</rewrite>

Mari kita analisis aturan untuk memahami apa yang dilakukannya.

<match url=".*"/>

Elemen di atas mengatakan bahwa aturan akan cocok dengan string URL apa pun.

<add input="{HTTP_HOST}" pattern="localhost" negate="true" />

Elemen di atas menambahkan kondisi ke aturan yang mengambil nilai header host dengan membaca variabel server HTTP_HOST, mencocokkannya dengan pola "localhost" dan kemudian meniadakan hasil pencocokan. Dengan kata lain, kondisi memverifikasi bahwa header host tidak cocok dengan "localhost".

<action type="AbortRequest" />

Elemen di atas memberi tahu Modul Penulisan Ulang URL untuk mengakhiri permintaan HTTP.

Menguji aturan blok akses

Untuk menguji aturan ini, buka browser Web dan buat permintaan ke http://127.0.0.1/article/234/some-title. Apa yang akan Anda lihat adalah browser yang tidak menerima respons apa pun dari server. Namun, jika Anda meminta http://localhost/article/234/some-title, maka server Web akan berhasil merespons.

Tampilan yang gagal adalah sebagai berikut:

Cuplikan layar yang memperlihatkan browser yang mengatakan, Halaman ini tidak dapat ditampilkan.

Tampilan yang berhasil adalah sebagai berikut:

Cuplikan layar yang memperlihatkan Halaman Uji Modul Penulisan Ulang U R L di browser.

Ringkasan

Dalam panduan ini, Anda telah mempelajari cara mengonfigurasi aturan penulisan ulang URL dengan menggunakan manajer IIS atau dengan mengedit file Web.config secara manual. Aturan yang dibuat dalam panduan ini menunjukkan beberapa fitur penting dari Modul Penulisan Ulang URL, seperti dukungan ekspresi reguler dan kemampuan untuk menggunakan header HTTP dan variabel server untuk membuat keputusan penulisan ulang.