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
Panduan ini akan menjelaskan berbagai jenis aturan yang didukung oleh modul penulisan ulang URL dan akan memandu Anda melalui cara mengonfigurasi aturan penulisan ulang global dan terdistribusi.
Latar belakang
Aturan penulisan ulang global digunakan untuk menentukan logika penulisan ulang URL di seluruh server. Aturan ini didefinisikan dalam file applicationHost.config dan tidak dapat ditimpa atau dinonaktifkan pada tingkat konfigurasi yang lebih rendah, seperti situs atau direktori virtual. Aturan global selalu beroperasi pada jalur URL absolut (yaitu, URI yang diminta tanpa nama server). Misalnya jika permintaan dibuat ke http://localhost/directory1/directory2/index.html, maka modul penulisan ulang URL akan meneruskan "directory1/directory2/index.html" sebagai input ke aturan global.
Aturan penulisan ulang terdistribusi digunakan untuk menentukan logika penulisan ulang URL khusus untuk cakupan konfigurasi tertentu. Aturan terdistribusi dapat ditentukan pada tingkat konfigurasi apa pun (kecuali file) dengan menggunakan file web.config. Aturan lokal selalu beroperasi pada URL relatif terhadap lokasi file Web.config di mana mereka ditentukan. Misalnya jika permintaan dibuat ke http://localhost/directory1/directory2/index.html dan aturan penulisan ulang didefinisikan dalam file Web.config yang terletak di direktori1, maka modul penulisan ulang URL akan meneruskan "directory2/index.html" sebagai input ke aturan tersebut.
Seperangkat aturan global selalu dievaluasi terlebih dahulu, dan setelah itu seperangkat aturan terdistribusi akan dievaluasi dengan menggunakan string URL yang dihasilkan oleh seperangkat aturan global.
Prasyarat
Panduan ini memerlukan prasyarat berikut:
- IIS 7.0 atau lebih tinggi dengan layanan peran ASP.NET diaktifkan
- Rilis Go Live penulisan ulang URL terinstal
Menyiapkan skenario penelusuran
Untuk menunjukkan cara menggunakan aturan global dan lokal, kami akan menerapkan skenario umum pemetaan sub-domain ke direktori. Ini akan memungkinkan kami menggunakan sub-domain untuk mengakses konten di direktori yang berbeda di situs kami. Misalnya pengguna akan dapat menelusuri ke http://blog.mysite.com alih-alih http://mysite.com/blog, atau ke http://forum.mysite.com alih-alih http://mysite.com/forum.
Untuk menyiapkan skenario, lakukan langkah-langkah berikut:
Buat dua folder yang disebut "blog" dan "forum" di
%SystemDrive%\inetpub\wwwroot\folder.Salin kode asp.net berikut dan masukkan ke
%SystemDrive%\inetpub\wwwroot\blogdalam folder 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> <p>This page is located in blog subdomain.</p> <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>Salin kode asp.net berikut dan letakkan di
%SystemDrive%\inetpub\wwwroot\forumfolder dalam file bernama forum.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> <p>This page is located in forum subdomain.</p> <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>Buka file yang disebut "host", yang terletak di
%SystemDrive%\windows\system32\drivers\etc\dan tambahkan dua baris berikut di bagiannya:127.0.0.1 forum_localhost 127.0.0.1 blog_localhostSetelah menambahkan baris ini, buka browser web dan telusuri dan http://blog_localhost/blog/article.aspx ke http://forum_localhost/forum/forum.aspx dan verifikasi bahwa halaman dirender dengan benar di browser.
Membuat aturan penulisan ulang global
Pertama, kita akan membuat aturan penulisan ulang global yang menulis ulang URL berdasarkan header host. Misalnya jika permintaan dibuat untuk http://blog_localhost/article.aspx maka aturan akan mengubah jalur URL menjadi "/blog/article.aspx".
Untuk membuat aturan global dengan menggunakan URL Rewrite UI di IIS Manager, ikuti langkah-langkah berikut:
- Buka Manajer IIS
- Dalam tampilan pohon navigasi pilih simpul server.
- Dalam Tampilan Fitur klik "Modul Penulisan Ulang URL"

- Di panel "Tindakan" klik "Tambahkan aturan..."

- Dalam dialog "Tambahkan Aturan" pilih "Aturan Kosong" dan klik "Ok":

Sekarang kita harus mendefinisikan aturan penulisan ulang yang sebenarnya. Dalam aturan penulisan ulang Modul Penulisan Ulang URL didefinisikan dengan menentukan empat informasi penting:
- Nama aturan
- Pola yang digunakan untuk mencocokkan string URL
- Rangkaian kondisi opsional
- Tindakan yang harus dilakukan jika pola dicocokkan dan semua pemeriksaan kondisi berhasil
Penamaan aturan
Dalam kotak teks "Nama" masukkan nama yang akan mengidentifikasi aturan secara unik, misalnya: "Pemetaan subdomain".
Menentukan pola
Dalam kotak teks "Pola" masukkan string berikut:
(.*)
String ini adalah ekspresi reguler yang menentukan bahwa pola akan cocok dengan string URL apa pun, termasuk string kosong dan akan menangkap string yang cocok dalam referensi belakang.
Menentukan kondisi
Klik tombol "Tambahkan Kondisi":
Klik "Tambahkan..." untuk memunculkan kotak dialog untuk menentukan kondisi.

Untuk "Input kondisi:" masukkan string ini: "{HTTP_HOST}". Ini mengonfigurasi modul penulisan ulang URL untuk menggunakan nilai header host permintaan http sebagai input untuk kondisi
Dalam kotak kombo drop down pilih "Cocok dengan pola".
Di kotak teks "Pola" masukkan "^([^_]+)_[^_]+". Ekspresi reguler ini akan digunakan untuk mencocokkan domain yang telah kita buat (blog_localhost dan forum_localhost) dan akan mengambil bagian string sebelum simbol "_" ke dalam referensi belakang. Misalnya untuk string "blog_localhost", string akan menyimpan "blog" di referensi belakang.
Setelah semua properti ditentukan, dialog kondisi akan terlihat seperti di bawah ini:
Klik OK untuk menyimpan kondisi dan kembali ke UI "Tambahkan Aturan".
Menentukan tindakan
Karena aturan yang kita buat seharusnya menulis ulang URL, pilih jenis tindakan "Tulis Ulang" dalam kotak grup "Tindakan". Dalam kotak teks "Rewrite URL:" masukkan string berikut:
{C:1}/{R:1}
String ini menentukan url input yang harus ditulis ulang. Referensi balik ke kondisi {C:1} digunakan sebagai nama folder dan kemudian apa pun yang diambil dalam pola aturan dipertahankan dengan menggunakan referensi balik ke aturan {R:1}.
Biarkan nilai default untuk semua pengaturan lainnya. UI "Edit Aturan" akan terlihat sebagai halaman berikut:
Simpan aturan dengan mengklik tindakan "Terapkan" di sisi kanan.
Untuk memahami bagaimana aturan ini akan diterapkan mari kita telusuri langkah-langkah yang dilakukan oleh modul penulisan ulang URL saat klien HTTP meminta URL ini:
http://blog_localhost/article.aspx?id=323:
- Modul penulisan ulang URL meneruskan "article.aspx?id=323" sebagai URL input ke aturan, berhasil mencocokkannya dengan pola aturan dan menangkapnya dalam referensi kembali aturan {R:1}
- Nilai header host ("blog_localhost") berhasil dicocokkan dengan ekspresi reguler "^([^_]+)_[^_]+" dan sebagai hasilnya "blog" diambil dalam referensi kembali kondisi {C:1}
- Sesuai dengan string substitusi {C:1}/{R:1} URL akan ditulis ulang menjadi "blog/article.aspx?id=323".
Menguji aturan
Untuk menguji bahwa aturan menulis ulang URL dengan benar, buka browser internet dan minta URL berikut:
http://blog_localhost/article.aspx?id=123
Anda akan melihat bahwa modul penulisan ulang URL telah mengubah URL dan membuka halaman Article.aspx di direktori "blog". Perubahan yang dilakukan oleh modul penulisan ulang URL didasarkan pada informasi yang diekstrak dari header host.
Demikian pula ketika Anda meminta http://forum_localhost/forum.aspx?id=345 URL akan ditulis ulang ke /forum/forum.aspx?id=345.
Membuat aturan terdistribusi
Aturan global yang baru saja kami buat digunakan untuk memetakan permintaan ke folder berdasarkan informasi yang diekstrak dari header host. Sekarang kita akan membuat aturan terdistribusi yang akan memungkinkan kita untuk memiliki URL tanpa parameter string kueri. Aturan terdistribusi akan mengambil sebagai input URL, yang sudah dimodifikasi oleh aturan global dan akan melakukan modifikasi tambahan padanya. Secara khusus:
- Aturan penulisan ulang di folder "blog" akan menulis ulang jalur URL dari "article/234/some-title" ke "article.aspx?id=234&title=some-title"
- Aturan penulisan ulang di folder "forum" akan menulis ulang jalur URL dari "topic/123/some-topic-title" ke "forum.aspx?topic=some-topic-title&id=123"
Aturan lokal dapat dibuat dengan menggunakan IIS Manager atau dengan mengedit file web.config. Untuk tujuan demonstrasi, kami akan membuat aturan dengan mengedit file web.config secara manual.
Untuk membuat aturan penulisan ulang terdistribusi:
Buat file web.config kosong dalam
%SystemDrive%\inetpub\wwwroot\**blog**folder. Buka di editor teks lalu tempelkan kode XML berikut ke dalamnya:<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <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> </system.webServer> </configuration>Buat file web.config kosong dalam
%SystemDrive%\inetpub\wwwroot\**forum**folder. Buka di editor teks lalu tempelkan kode XML berikut ke dalamnya:<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <rewrite> <rules> <rule name="Rewrite to forum.aspx"> <match url="^topic/([0-9]+)/([_0-9a-z-]+)"/> <action type="Rewrite" url="forum.aspx?topic={R:2}&id={R:1}"/> </rule> </rules> </rewrite> </system.webServer> </configuration>
Menguji aturan global dan terdistribusi
Untuk menguji bahwa semua aturan berfungsi dengan benar bersama-sama, buka browser Web dan buat permintaan ke http://blog_localhost/article/234/some-title. Respons di browser harus menunjukkan bahwa URL pertama kali diubah oleh aturan global, dan kemudian telah dimodifikasi secara tambahan oleh aturan terdistribusi.
Demikian pula, jika Anda meminta http://forum_localhost/topic/123/some-topic-title, Anda akan melihat bahwa modul penulisan ulang URL mengubah string URL yang diminta menjadi "/forum/forum.aspx?topic=some-topic-title&id=123."
Ringkasan
Dalam tutorial ini Anda telah menerapkan skenario pemetaan sub-domain dengan menggunakan aturan global, lalu menggunakan aturan terdistribusi untuk mengaktifkan URL ramah pengguna untuk halaman web di folder tersebut.




