Saya melihat di Internet banyak teman yang melakukan urlrewrite di asp.net dan menggunakan metode HttpHandle+Server.Transfer. Faktanya, cara ini salah. Pertama, HttpHandle tidak dapat mengimplementasikan urlrewrite, kedua, Server.Transfer adalah pengalihan standar, bukan urlrewrite sama sekali.
Faktanya, Anda tidak perlu mengimplementasikan HttpHandle atau HttpModule Anda sendiri untuk mengimplementasikan urlrewrite. Ini dapat dengan mudah diimplementasikan dengan beberapa baris kode.
Yang saya perkenalkan di sini adalah pada host virtual.Host virtual berbeda dari server Anda sendiri. Anda tidak memiliki izin untuk memodifikasi iis, Anda juga tidak memiliki izin untuk menginstal plug-in iis seperti iis rewrite. Namun kita masih bisa dengan mudah menyelesaikan fungsi-fungsi yang dibutuhkan.
Metode spesifiknya adalah sebagai berikut: Buka global.asax.cs dan temukan void yang dilindungi Application_BeginRequest(Pengirim objek, EventArgs e). Dari nama metodenya, saya rasa saya bisa menebak fungsinya. Masukkan kode berikut:
protected void Application_BeginRequest(Pengirim objek, EventArgs e)
{
string oldUrl = HttpContext.Current.Request.RawUrl;
pola string = @"^(.+)default/(d+).aspx(?.*)*$";
string ganti = "$1default.aspx?id=$2";
if(Regex.IsMatch(oldUrl, pola, RegexOptions.IgnoreCase | RegexOptions.Compiled))
{
string newUrl = Regex.Replace(oldUrl, pola, ganti, RegexOptions.Compiled | RegexOptions.IgnoreCase);
ini.Konteks.RewritePath(newUrl);
}
}
Dengan kode di atas, saya mengakses URL yang mirip dengan: .../default/123.aspx. Tentu saja URL ini tidak ada di komputer saya, sehingga akan diarahkan ke: .../default.aspx? =123.
Tentu saja, dengan menggunakan ekspresi reguler yang kuat, Anda dapat menulis ulang URL sesuai kebutuhan Anda. Semua ini dilakukan secara diam-diam di sisi server, dan klien tidak akan menyadarinya. Karena berada di virtual host, kita hanya dapat mengarahkan ulang file .aspx. Jika itu adalah server kita sendiri, kita dapat memproses sufiks apa pun hanya dengan mendaftarkan sufiks di iis. Misalnya, Anda dapat mendaftarkan jenis seperti *.myweb, sehingga ketika orang lain mengunjungi default/456.myweb, Anda dapat mengalihkannya ke default.aspx?id=456. Singkatnya, selama Anda bisa memikirkannya, .net dapat membantu Anda mewujudkannya, dan semua ini tidak memerlukan banyak kode.