Akhir-akhir ini saya disibukkan dengan program blog saya sendiri, dan tentu saja saya beralih ke masalah penulisan ulang URL yang sering dibicarakan di blog. Salah satu alasannya adalah masalah wajah dalam sistem blog multi-pengguna. Awalnya saya ingin menggunakan blog CSDN saya http://blog.csdn.net/joshualang sebagai contoh, tapi saya memikirkannya dan menggunakan ruang saya ( http:/ /www.tyoo.net ), karena disinilah saya akan pergi setelah saya menyelesaikan blog saya.
Jika penulisan ulang URL yang diperlukan tidak dilakukan seperti http://www.tyoo.net/blog/joshualang , alamat blog seperti http://www.tyoo.net/blog/default.aspx?Bloger=joshualang akan muncul Semua Orang Perlu diketahui bahwa sebuah blog dianggap sebagai rumah lain yang dibangun di Internet oleh sebagian besar netizen. Dalam kehidupan nyata, mereka akan mempertimbangkan jarak alamat rumah dan kualitas transportasi. Demikian pula, rumah di Internet juga harus memiliki nomor rumah itu mudah diingat. Nomor rumah ini tidak terlalu panjang (tidak terlalu layak), dan menambahkan banyak parameter setelahnya mungkin membuat orang terintimidasi. Jika ingin membaca artikel, Anda harus menghadapi banyak sekalihttp://blog.tyoo.net /Articles/Default.aspx?Bloger=joshualang&ArticleID=20070118234530Apakah Anda merasakan sesuatu? Mari kita lihat efek yang dimiliki oleh banyak program blog sekarang: http://blog.tyoo.net/joshua/Articles/2007/01/18/ Sekilas semua orang akan mengetahui manfaat dari efek ini, dan inilah Ini membawa kita ke poin kunci dari artikel ini!
Ya, kami perlu mencapai salah satu tujuan kami melalui rangkaian yang sangat teratur.
URL yang layak harus dipilih berdasarkan kriteria berikut:
• Pendek.
• Mudah untuk mengetik.
• Struktur situs dapat dilihat.
• "Truncatable," yang memungkinkan pengguna menjelajahi situs dengan menghapus komponen URL.
Saya tidak perlu mengatakan lebih banyak tentang hal ini. Faktanya, ini semua tentang kesederhanaan dan kepraktisan.
Catatan: Omong-omong, perlu membaca dokumen Scott Mitchell di situs web MSDN http://www.microsoft.com/china/msdn/library/webservices/asp.net/URLRewriting.mspx?pf=true#top
sudah Beberapa ahli telah menjelaskan prinsip penulisan ulang URL dengan cukup jelas di sini. Jika Anda belum memahaminya, Anda dapat mengunduh kode sumber dokumen di atas untuk mempelajarinya.
Demi efisiensi (waktu orang sangat berharga, dan waktu programmer lebih berharga lagi), saya langsung menggunakan komponen URLRewriter.net. Sebenarnya, saya belum pernah memiliki pengalaman menulis ulang URL sebelumnya, jadi saya membaca secara kasar sumbernya program beberapa kali dan mulai memulai. Tentu saja tidak perlu konten teknis apa pun di awal. Selama penulisan ulang berhasil, akan terasa menyenangkan. Kemudian, dalam proses penulisan ulang yang berkelanjutan, kita akan menemukan permasalahan dan menemukan ide-ide baru serta penemuan-penemuan baru. . . Oleh karena itu artikel ini.
Mari kita mulai sekarang. Kali ini, fokusnya sebenarnya pada penulisan ulang URL dari pola tanggal yang baru saja disebutkan
http://blog.tyoo.net/Articles/2007/01/18/233030/joshualang.aspx Ini adalah efek akhir yang ingin dicapai di sini. .
Dasar-dasar: Komponen UrlRewriter.net (tentu saja Anda dapat menulisnya sendiri), memahami
parameter ekspresi reguler: ArticleID //Nomor artikel [Jenis: panjang string: 14 (seperti: yyyymmddhhmmss) // Bermakna dan tidak berulang]
Blogger //Blog Nama pengguna master [Jenis: string yang dimulai dengan huruf]
Salah satu masalah yang dihadapi selama proses penulisan ulang URL adalah kesalahan 404 saat mengakses direktori atau file yang tidak ada. Saran yang diberikan oleh dokumen ini di MSDN adalah untuk membuat folder yang diperlukan dan halaman kosong di direktori program. Memang merepotkan, ribuan direktori perlu dibuat.
Karena kita tidak bisa begitu saja mengakses file direktori yang tidak ada, maka kita tidak perlu mengakses direktori tersebut. Kita perlu mengakses file yang ada (semua URL saya mengarah ke halaman Default.aspx di bawah direktori root Blog dan kemudian secara dinamis memuat grup kontrol untuk menghasilkan halaman fungsi tampilan yang berbeda). halaman ini ~/Default .aspx
Tugas berikut adalah meneruskan parameter, tentu saja URL diteruskan berdasarkan nilai. Itu sebabnya inilah saatnya untuk menulis ulang.
Protagonis akan muncul lagi: ekspresi reguler.
Penggunaan ekspresi reguler di sini sangat keren~ http://blog.tyoo.net/joshualang/Articles/2007/01/18/Default.aspx direktori Anda dapat membuat aturan penulisan ulang URL seperti berikut:
< RewriterRule>
<LookFor>~/(w{6,16})/Artikel/(d{4})/(d{2})/(d{2})/Default.aspx</LookFor>
<SendTo>~/Default.aspx?Bloger=$1&tahun=$2&bulan=$3&hari=$4</SendTo>
</Aturan Penulis Ulang>
Jika aturan yang ditulis seperti ini dihapus, pasti akan terjadi error 404 karena halaman yang diakses tidak ada. Karena akan mencari sepanjang tanda direktori Anda, jika Anda membuat proyek direktori lain, ukurannya akan terlalu besar. Lihatlah kode berikut:
<RewriterRule>
<LookFor>~/(w{6,16})/Artikel/(d{4})/(d{2})/(d{2})/(d{6})/Default.aspx</LookFor >
<SendTo>~/Default.aspx?Bloger=$1&tahun=$2&bulan=$3&hari=$4&time=$5</SendTo>
</Aturan Penulis Ulang>
Sekarang saya punya waktu ekstra, tidak ada yang akan memilih untuk membuat direktori. Kemudian manfaatkan sepenuhnya file yang ada untuk menyelesaikan tugas ini.
Faktanya, banyak orang mungkin berpikir untuk menggunakan nama file daripada struktur direktori. Kalau dipikir-pikir, bukan? Tentu saja, hal ini memerlukan pemahaman tertentu tentang ekspresi reguler.
Oke, mari kita lihat cara kerjanya.
<Aturan Penulis Ulang>
<LookFor>~/(w{5,16})/Artikel/(d{4})/(d{2})/(d{2})/(d{6}).aspx</ Cari>
<SendTo>~/Default.aspx?ArticleID=$2$3$4$5&Bloger=$1</SendTo>
</Aturan Penulis Ulang>
Anda dapat dengan mudah melihat bahwa saya menggunakan "" untuk keluar dari "/" dan menggunakannya dalam nama file. Struktur saat ini
adalah
http://blog.tyoo.net/joshualang/2007/01/18
adalah string berdasarkan tahun, bulan, hari, jam, menit dan detik, karena masuk akal untuk memasukkan data tanpa mempertimbangkan duplikasi, dan menggunakan waktu di sini juga nyaman untuk membuat kueri. Kombinasi 14 digit yang diperoleh $2$3$4$5 adalah ArticleID saya. Catatannya dapat dengan mudah ditemukan melalui tanggal publikasi dan nomor artikel. Manfaat terakhir sangat jelas terlihat saat menghapus.
Sekarang mari kita hapus bagian waktu:
<RewriterRule>
<LookFor>~/(w{5,16})/Artikel/(d{4})/(d{2})/(d{2}).aspx</LookFor>
<SendTo>~/Default.aspx?ArticleID=$2$3$4&Bloger=$1</SendTo>
</Aturan Penulis Ulang>
Pada gilirannya, kita dapat menghapus URL ke dalam pola ini: http://blog.tyoo.net/joshualang/Articles/2007.aspx atau bahkan
http://blog.tyoo.net/joshualang/Articles/Default.aspx bukankah itu sangat sederhana? Namun ada masalah yang harus diperhatikan: segala sesuatu tidak mungkin dan bisa dicapai. Masih banyak hal yang perlu diperhatikan, seperti:
http://blog.tyoo.net/joshualang/Articles/2007.aspx dan http: //blog.Apa perbedaan antara tyoo.net/joshualang/Articles/2007/.aspx ? Bisakah yang terakhir berjalan normal setelah mengikuti aturan di atas?
Hal yang samatidak dapat
dikatakan: http://blog.tyoo.net/joshualang/Articles/2007/01/08/.aspx juga tidak dapat diterima. Aturan respons lainnya perlu didefinisikan untuk mencapai efek penulisan ulang yang sesuai.
Oke, efeknya kira-kira ada; berikut kode aturan lengkapnya:
<!--penulis: Joshua Li ( [email protected] ) QQ:245965348-->
<!-- Aturan Penampil Konten Blog -->
<Aturan Penulis Ulang>
<LookFor>~/([A-Za-z]w{5,16})/Default.aspx</LookFor>
<SendTo>~/Default.aspx?Bloger=$1</SendTo>
</Aturan Penulis Ulang>
<!-- Aturan Pendaftar Artikel -->
<Aturan Penulis Ulang>
<Cari>~/Artikel/(d{4})/(d{2})/(d{2})/(d{1,6})/([A-Za-z]w {5,16}).aspx</LookFor>
<SendTo>~/Default.aspx?ArticleID=$1$2$3$4&Bloger=$5</SendTo>
</Aturan Penulis Ulang>
<Aturan Penulis Ulang>
<LookFor>~/Artikel/(d{4})/(d{2})/(d{2})/(d{1,6})((/)?).aspx</ Cari>
<SendTo>~/Default.aspx?ArticleID=$1$2$3$4</SendTo>
</Aturan Penulis Ulang>
<Aturan Penulis Ulang>
<LookFor>~/Artikel/(d{4})/(d{2})/(d{2})/([A-Za-z]w{5,16}).aspx</ Cari>
<SendTo>~/Default.aspx?ArticleID=$1$2$3&Bloger=$4</SendTo>
</Aturan Penulis Ulang>
<Aturan Penulis Ulang>
<LookFor>~/Artikel/(d{4})/(d{2})/(d{2})((/)?).aspx</LookFor>
<SendTo>~/Default.aspx?ArticleID=$1$2$3</SendTo>
</Aturan Penulis Ulang>
<Aturan Penulis Ulang>
<LookFor>~/Artikel/(d{4})/(d{2})/([A-Za-z]w{5,16}).aspx</LookFor>
<SendTo>~/Default.aspx?ArticleID=$1$2&Bloger=$3</SendTo>
</Aturan Penulis Ulang>
<Aturan Penulis Ulang>
<LookFor>~/Artikel/(d{4})/(d{2})((/)?).aspx</LookFor>
<SendTo>~/Default.aspx?ArticleID=$1$2</SendTo>
</Aturan Penulis Ulang>
<Aturan Penulis Ulang>
<LookFor>~/Artikel/(d{4})/([A-Za-z]w{5,16}).aspx</LookFor>
<SendTo>~/Default.aspx?ArticleID=$1&Bloger=$2</SendTo>
</Aturan Penulis Ulang>
<Aturan Penulis Ulang>
<LookFor>~/Artikel/(d{4})((/)?).aspx</LookFor>
<SendTo>~/Default.aspx?ArticleID=$1</SendTo>
</Aturan Penulis Ulang>
<Aturan Penulis Ulang>
<LookFor>~/Artikel/([A-Za-z]w{5,16}).aspx</LookFor>
<SendTo>~/Default.aspx?Bloger=$1</SendTo>
</Aturan Penulis Ulang>
<Aturan Penulis Ulang>
<LookFor>~/Artikel/Default.aspx</LookFor>
<SendTo>~/Default.aspx?ArticleID=-1</SendTo>
</Aturan Penulis Ulang>
Catatan: Untuk mencegah pengguna menghapus ekstensi .aspx penting secara tidak sengaja di sini, saya menggunakan nama pengguna sebagai nama identifikasi virtual file.
URL final yang diperoleh: http://blog.tyoo.net/Articles/2007/01/18/015000/joshualang.aspx
Pada saat yang sama, waktu maksimum 6 digit di akhir disetel agar dapat dihapus dan lebih lama, bahkan jika hilang Akan lebih mudah juga untuk menemukan daftar yang paling dekat dengan waktu publikasi dengan menggunakan nomor-nomor tertentu.
Menghapus nama pengguna tidak akan mempengaruhi penggunaan. Anda masih bisa dengan cepat mendapatkan daftar artikel yang paling sesuai yang Anda butuhkan melalui format waktu yang detail. Jika nama pengguna masih utuh, daftar artikel yang sesuai dengan penulis dalam jangka waktu tertentu dapat ditemukan dengan menghapus.
Perhatikan juga: format nama pengguna ([A-Za-z]{6-16}) dan urutan validasi aturan.
Meringkaskan:
Setelah melewati proses penulisan ulang URL biasa, formatnya akan ketat seolah-olah direktori ini benar-benar ada, tetapi struktur kerangka kerja akan tampak lebih nyaman dan fleksibel, sehingga mendapatkan peningkatan penting dalam fungsionalitas dan pengalaman pengguna. Jika Anda memiliki pertanyaan, silakan balas dan bergabung dalam diskusi. Jika ada cara yang lebih baik untuk menulis ulang, saya akan dengan senang hati memberi tahu saya.
http://www.cnblogs.com/Joshualang/archive/2007/01/19/624302.html