Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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:
- IIS 7 atau lebih tinggi dengan layanan peran ASP.NET diaktifkan.
- 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:
- Buka Manajer IIS.
- Pilih Situs Web Default.
- Di Tampilan Fitur klik Penulisan Ulang URL.

- Di panel Tindakan di sisi kanan, klik Tambahkan aturan...

- Dalam kotak dialog Tambahkan Aturan , pilih Aturan Kosong dan klik OK.

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".
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:
- Dimulai dengan urutan karakter "artikel/".
- Berisi satu atau beberapa karakter numerik setelah "/" pertama.
- 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:
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}&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.
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:
Masukkan URL pengalihan seperti yang ditunjukkan di bawah ini:
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.
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}&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:
Tampilan yang berhasil adalah sebagai berikut:
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.







