Asp.net Url Rewrite hướng dẫn Rewrite Url không cần cấu hình IIS

Bạn có liên kết dạng http://mysite/Post.aspx?ParentID=123&CateID=234&NewID=345 giờ bạn muốn Rewrite thành liên kết dạng http://mysite/123/234/345/. Bài viết này tôi sẽ hướng dẫn bạn thực hiện việc Rewrite url như vậy mà không phụ thuộc vào phiên bản IIS và cũng không phải cấu hình gì trong IIS.

Có nhiều bạn gặp khó khăn khi muốn Rewite Url, trên các diễn đàn vấn đề này cũng được thảo luận rất nhiều và cũng đã có rất nhiều bài hướng dẫn về url rewite nhưng đa số các bài đó đều phải cấu hình trong IIS. Tôi đã tìm tài liệu và đã có thể hướng dẫn bạn thực hiện việc này một cách đơn giản.
Bạn cần xây dựng một thư viện để thực hiện việc Rewrite Url. Ở đây đã được Build thành dll rồi. Cách dùng cũng rất đơn giản. Trước tiên bạn download về và add vào thư mục Bin trong website của bạn. Sau đó bạn khai báo và cấu hình trong web.config như sau

1. Trong configSections bạn khai báo như sau:

<configSections>
<sectionGroup name=”modulesSection”>
<section name=”rewriteModule”
type=”RewriteModule.RewriteModuleSectionHandler, RewriteModule”/>
</sectionGroup>
</configSections>

2. Trong modulesSection bạn rewrite Url theo mẫu như sau:

<modulesSection>
<rewriteModule>
<rewriteOn>true
<rewriteRules>
<rule source=”(\d+)/(\d+)/(\d+)/(.+)/”
destination=”Post.aspx?ParentID=$1&CateID=$2&NewID=$3&module=$4″/>
<rule source=”(\d+)/(\d+)/(\d+)/”
destination=”Post.aspx?ParentID=$1&CateID=$2&NewID=$3″/>
<rule source=”(\d+)/(\d+)/”
destination=”Post.aspx?ParentID=$1&CateID=$2″/>
</rewriteRules>
</rewriteModule>
</modulesSection>

Ở đây tôi đã đưa ra cho bạn ví dụ về việc sử dụng nhiều nhất là 4 Request. Và bạn cần chú ý rằng nếu trong ứng dụng của bạn có nhiều cấp request thì bạn cần khai báo những Url có cấp Request cao hơn trước. Như minh họa bạn thấy rule thứ nhất có 4 request tôi khai báo đầu tiên, tiếp đó là 3 cấp request tôi khai báo thứ hai, …

3. Trong httpModules của bạn khai báo như sau:

<httpModules>
<add name=”RewriteModule” type=”RewriteModule.RewriteModule, RewriteModule”/>
</httpModules>

Như vậy khi một liên có dạng http://mysite/123/234/345/ ở đây chính là post.aspx?ParentID=123&CateID=234&NewID=345. Vậy bạn cần xử lý trong code của trang post.aspx để lấy được các giá trị ứng với ParentID, CateID, NewID như sau:

protected void Page_Load(object sender, EventArgs e)
{
//Khai báo dùng RewriteModule
RewriteModule.RewriteContext con = RewriteModule.RewriteContext.Current;
int ParentID, CateID, NewID;
ParentID = int.Parse(“0″ + con.Params["ParentID"]);
CateID = int.Parse(“0″ + con.Params["CateID"]);
NewID = int.Parse(“0″ + con.Params["NewID"]);
}

Khi đó các giá trị ParentID sẽ là 123, CateID sẽ là 234, NewID sẽ là 345

Bạn có thể download thư viện và code mẫu về tại đây: Download Source
Theo hmweb.com.vn

About these ads

Giới thiệu tieuyeuit
Lập trình viên Asp.net Tôi chia sẻ một,bạn chia sẻ một và chúng ta có rất nhiều!

10 Responses to Asp.net Url Rewrite hướng dẫn Rewrite Url không cần cấu hình IIS

  1. Mình sử dụng url rewrite ok trên local nhưng up lên host thì ko được xin giúp đỡ với

  2. cảm ơn bạn! nhưng mình rewrite bằng file Rewrite.dll mà bài trước bạn hướng dẫn, mình chạy trên local ok rồi, ko cần phải cấu hình ISS. bây h up lên host vẫn phải cấu hình à, hay là host ko load được file dll

  3. tanthangvl nói:

    mình thấy kỹ thuật này rất hay, mình mới tìm hiểu nên nhờ các bạn giúp đỡ một sô vấn đề như: với cách rewrite như trên mình muốn link đến nhiều trang hơn (ở trên chỉ link đến trang post.aspx) thì cấu hình thế nào. Trong trường hợp mình ko link đến trang post.aspx ko có tham số thì thế nào? >> Bạn có thể hướng dẫn và giải thích các tham số trong cấu hình web.config cho mình rõ không?
    ví dụ:
    >> cám ơn rất nhiều

  4. Tuân nói:

    Bạn à ! Vẫn không được bạn ạ ! minh pub và đưa lên host no vẫn báo lỗi not found !
    Bây giờ phải làm như thế nào vậy bạn. Mong đc chỉ giáo : nick yahoo : hyvongmongmanh_2711

Gửi phản hồi

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Thay đổi )

Twitter picture

You are commenting using your Twitter account. Log Out / Thay đổi )

Facebook photo

You are commenting using your Facebook account. Log Out / Thay đổi )

Google+ photo

You are commenting using your Google+ account. Log Out / Thay đổi )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

%d bloggers like this: