Membuat Aturan Keluar untuk Modul Penulisan Ulang URL

oleh Ruslan Yakushev

Bagian dokumentasi ini berlaku untuk Modul Penulisan Ulang URL Versi 2.0 untuk IIS 7.

Panduan ini akan memandu Anda melalui cara membuat dan menguji aturan penulisan ulang keluar untuk Modul Penulisan Ulang URL 2.0.

Prasyarat

Panduan ini memerlukan prasyarat berikut:

  1. IIS 7 atau lebih tinggi dengan layanan peran ASP.NET diaktifkan;
  2. Rilis RC Modul Penulisan Ulang URL 2.0 terinstal.

Menyiapkan halaman Web uji

Untuk menunjukkan cara kerja modul penulisan ulang URL 2, Anda akan menggunakan halaman ASP.NET sederhana. Halaman ini membaca variabel server Web dan menampilkan nilainya di browser. Ini juga membangun hyperlink dengan menggunakan variabel server dan kemudian menempatkan tautan tersebut ke dalam HTML respons.

Untuk membuat halaman pengujian

  1. Buat file bernama article.aspx di folder berikut:

    %SystemDrive%\inetpub\wwwroot\
    
  2. Salin markup ASP.NET berikut, tempelkan ke dalam file dan simpan file:

    <%@ 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 v2 Test</title>
    </head>
    <body>
        <h1>URL Rewrite Module v2 Test Page</h1>
        <h2>Inbound URL Rewriting</h2>
        <table>
            <tr>
                <th>Server Variable</th>
                <th>Value</th>
            </tr>
            <tr>
                <td>Original URL: </td>
                <td><%= Request.ServerVariables["UNENCODED_URL"] %></td>
            </tr>
            <tr>
                <td>Final URL: </td>
                <td><%= Request.ServerVariables["SCRIPT_NAME"] + "?" + Request.ServerVariables["QUERY_STRING"] %></td>
            </tr>
        </table>
        <h2>Outbound URL Rewriting</h2>
            <a href="<%= Request.ServerVariables["SCRIPT_NAME"] + "?" + Request.ServerVariables["QUERY_STRING"] %>">Here</a> is the link to this article.
    </body>
    </html>
    
  3. Buka browser Web dan minta URL berikut untuk memastikan bahwa halaman dirender dengan benar:

    http://localhost/article.aspx
    

Menambahkan Aturan Penulisan Ulang Masuk

Langkah selanjutnya adalah menambahkan aturan yang menulis ulang URL yang memiliki format berikut:

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

URL ini akan ditulis ulang untuk memiliki format seperti berikut:

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

Untuk menambahkan aturan penulisan ulang masuk:

  1. Buka file web.config yang terletak di lokasi berikut:

    %SystemDrive%\inetpub\wwwroot\
    
  2. Di bawah elemen /configuration/system.webServer , tambahkan yang berikut ini lalu simpan file:

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

Untuk informasi selengkapnya tentang membuat aturan penulisan ulang masuk, lihat Membuat Aturan Penulisan Ulang untuk Modul Penulisan Ulang URL.

Menguji Aturan Penulisan Ulang Masuk

Anda sekarang dapat menguji bahwa aturan penulisan ulang masuk berfungsi seperti yang dirancang.

Untuk menguji aturan penulisan ulang masuk:

Buka browser Web dan minta URL berikut:

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

Jika aturan penulisan ulang berfungsi dengan benar, Anda akan mendapatkan formulir respons server yang terlihat seperti berikut ini:

Cuplikan layar Final U R L setelah mengarahkan kubah ke tautan di Halaman Uji Modul Penulisan Ulang U R L menggunakan browser web.

Anda dapat melihat bahwa karena aturan masuk dimungkinkan untuk mengakses halaman web ini dengan menggunakan struktur URL yang sederhana dan ramah pengguna. Namun, jika pengguna mengklik hyperlink di dalam halaman HTML, URL dengan parameter string kueri akan digunakan oleh browser Web. Ini tidak lebih disukai karena beberapa alasan:

  1. Pengunjung situs web akan melihat struktur URL internal yang ingin Anda sembunyikan dengan menggunakan aturan penulisan ulang URL.
  2. Halaman yang sama akan dapat diakses oleh beberapa URL, yang tidak ideal untuk pengoptimalan mesin pencari.

Cara paling mudah untuk memperbaikinya adalah dengan memodifikasi halaman HTML untuk menggunakan struktur tautan sederhana. Namun, dalam banyak kasus ini tidak mungkin. Misalnya, jika Anda sudah memiliki aplikasi Web warisan yang kompleks atau aplikasi Web yang tidak dapat Anda ubah, maka tugas memperbaiki semua tautan URL dalam aplikasi bisa sangat memakan waktu, atau tidak layak sama sekali.

Ini adalah ketika penulisan ulang URL keluar dapat membantu. Penulisan ulang URL keluar dapat memperbaiki tautan dengan cepat dalam respons yang dihasilkan oleh aplikasi.

Membuat aturan penulisan ulang keluar

Sekarang Anda akan membuat aturan penulisan ulang keluar yang mengubah URL dalam respons HTML. Aturan akan mengubah URL yang memiliki format berikut:

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

URL ini akan ditulis ulang sebagai berikut:

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

Anda akan membuat aturan keluar dengan menggunakan antarmuka pengguna Penulisan Ulang URL di Manajer IIS.

Untuk membuat aturan keluar:

  1. Buka Manajer IIS
  2. Pilih "Situs Web Default"
  3. Di Tampilan Fitur pilih "Penulisan Ulang URL"
    Cuplikan layar Penulisan Ulang U R L dipilih di panel Beranda Situs Web Default.
  4. Di panel Tindakan di sisi kanan klik "Tambahkan Aturan...". Dalam dialog "Tambahkan Aturan" pilih "Aturan Kosong" di bawah kategori "Aturan keluar" dan klik OK.
    Cuplikan layar memilih templat Aturan kosong di bawah Aturan keluar dalam dialog Tambahkan Aturan.

Sekarang Anda harus menentukan aturan keluar yang sebenarnya. Dalam URL Rewrite Module 2.0, aturan penulisan ulang keluar ditentukan dengan menentukan informasi berikut:

  • Nama aturan.
  • Prasyarat opsional yang mengontrol apakah aturan ini harus diterapkan ke respons.
  • Pola yang digunakan untuk mencocokkan string dalam respons.
  • Serangkaian kondisi opsional.
  • Tindakan yang harus dilakukan jika pola cocok dan semua pemeriksaan kondisi berhasil.

Penamaan aturan

Dalam kotak teks "Nama" masukkan nama yang akan mengidentifikasi aturan secara unik, misalnya: "Tulis ulang untuk membersihkan URL".

Menentukan Prasyarat

Prasyarat digunakan untuk mengevaluasi apakah evaluasi aturan keluar harus dilakukan pada respons. Misalnya jika aturan yang memodifikasi konten HTML, hanya respons HTTP dengan header jenis konten yang diatur ke "teks/html" yang harus dievaluasi terhadap aturan ini. Evaluasi aturan keluar dan penulisan ulang konten adalah operasi intensif CPU yang dapat berdampak negatif pada performa aplikasi web. Oleh karena itu, gunakan prasyarat untuk mempersempit kasus ketika aturan keluar diterapkan.

Karena aturan yang Anda buat harus diterapkan hanya pada respons HTML, Anda akan menentukan prasyarat yang memeriksa apakah jenis konten header respons HTTP setara dengan "teks/html".

Untuk menentukan prasyarat:

  1. Di daftar Pra-kondisi, pilih "<Buat Pra-kondisi> Baru".

  2. Ini akan membawa Anda ke dialog Editor pra-kondisi, di mana Anda harus menentukan prasyarat. Tentukan pengaturan prasyarat sebagai berikut:

    • Nama: "IsHTML"

    • Menggunakan: "Ekspresi Reguler"

    • Klik "Tambahkan" untuk memunculkan dialog "Tambahkan kondisi". Dalam dialog ini tentukan:

      • Input kondisi: "{RESPONSE_CONTENT_TYPE}"

      • Periksa apakah string input: "Cocok dengan pola"

      • Pola: "^text/html"

        Cuplikan layar menambahkan pra-kondisi baru dengan pengaturan yang ditentukan.

  3. Klik OK untuk menyimpan prasyarat dan kembali ke halaman "Edit Aturan".

Menentukan cakupan yang cocok

Aturan penulisan ulang keluar dapat beroperasi pada konten header HTTP atau pada konten isi respons. Aturan ini perlu mengganti tautan dalam konten respons sehingga di daftar drop-down "Cakupan yang Cocok" pilih "Respons".

Menentukan filter tag

Filter tag digunakan untuk mencakup pencocokan pola dengan elemen HTML tertentu saja, alih-alih mengevaluasi seluruh respons terhadap pola aturan. Pencocokan pola adalah operasi yang sangat intensif CPU dan jika seluruh respons dievaluasi terhadap pola, itu dapat secara signifikan memperlambat waktu respons aplikasi Web. Filter tag memungkinkan Anda menentukan bahwa pencocokan pola harus diterapkan hanya dalam konten tag HTML tertentu, sehingga secara signifikan mengurangi jumlah data yang harus dievaluasi terhadap pola ekspresi reguler.

Untuk menentukan filter tag, perluas daftar drop-down "Cocokkan konten di dalam: " lalu pilih dan centang kotak "A (atribut href)".

Ini mengatur aturan untuk menerapkan pola hanya ke nilai atribut href hyperlink, seperti dalam contoh berikut:

<a href="this string will be used for pattern matching">Some link</a>

Menentukan pola

Dalam kotak teks "Pola" masukkan string berikut:

^/article\.aspx\?id=([0-9]+)(?:&|&amp;)title=([_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 "/article.aspx?".
  • Berisi parameter string kueri pertama yang memiliki nilai numerik.
  • Berisi parameter string kueri kedua yang memiliki nilai alfanumerik.

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. Selain itu, dalam kebanyakan kasus simbol "&" dikodekan HTML dalam respons, sehingga pola ekspresi reguler perlu mempertimbangkannya.

Menentukan tindakan

Pilih jenis tindakan "Tulis Ulang" di kotak grup "Tindakan". Dalam kotak teks "Nilai", masukkan string berikut:

/article/{R:1}/{R:2}

String ini menentukan nilai baru tempat alamat tautan harus ditulis ulang. Perhatikan bahwa untuk nilai parameter string kueri ekspresi menggunakan {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" akan terlihat seperti halaman berikut:

Cuplikan layar sebelum menerapkan Aturan Penulisan Ulang Keluar baru dengan Pra-kondisi Is H T M L

Simpan aturan dengan mengklik tindakan "Terapkan" di sisi kanan.

Menampilkan Aturan Penulisan Ulang di File Konfigurasi

Aturan penulisan ulang disimpan baik dalam file aplicationHost.config atau dalam file web.config . Untuk memeriksa konfigurasi aturan yang baru saja Anda buat, buka file web.config yang terletak di

%SystemDrive%\inetput\wwwroot\

Dalam file ini Anda melihat bagian <rewrite> yang berisi semua definisi aturan, seperti dalam contoh berikut:

<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>
 <outboundRules>
  <rule name="Rewrite to clean URL" preCondition="IsHTML">
   <match filterByTags="A" pattern="^/article\.aspx\?id=([0-9]+)(?:&amp;|&amp;amp;)title=([_0-9a-z-]+)$" />
   <action type="Rewrite" value="/article/{R:1}/{R:2}" />
  </rule>
  <preConditions>
   <preCondition name="IsHTML">
    <add input="{RESPONSE_CONTENT_TYPE}" pattern="^text/html" />
   </preCondition>
  </preConditions>
 </outboundRules>
</rewrite>

Menguji aturan

Sekarang Anda dapat menguji bahwa aturan menulis ulang URL dengan benar. Buka browser Web dan minta URL berikut:

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

Anda akan melihat bahwa aturan penulisan ulang keluar telah mengubah tautan dalam respons HTML:

Cuplikan layar U R L baru setelah mengarahkan mouse ke atas tautan di Halaman Uji Modul Penulisan Ulang U R L menggunakan browser web.

Sekarang, jika pengunjung situs mengklik tautan ini, format URL bersih akan digunakan dan representasi URL internal yang digunakan oleh halaman ini tidak akan terungkap.

Ringkasan

Dalam panduan ini, Anda telah mempelajari cara mengonfigurasi aturan penulisan ulang keluar di Modul Penulisan Ulang URL 2.0 dengan menggunakan IIS Manager atau dengan mengedit file web.config secara manual. Aturan yang dibuat dalam panduan ini menunjukkan beberapa fitur penting dari Modul Penulisan Ulang URL 2.0, seperti penulisan ulang keluar, prasyarat, dan filter tag.