URL Rewrite
Bạn tham khảo bài viết.
Trước hết chúng ta hãy cùng trả lời câu hỏi: Tại sao Rewriting URL lại quan trọng?
Những tình huống sau khiến lập trình viên thực sự muốn làm địa chỉ URL của mình được mềm dẻo, bạn hãy đọc và suy ngẫm:
Khi bạn muốn thay đổi cấu trúc của trang trong một ứng dụng web, và bạn muốn chắc chắn rằng những người đã lưu địa chỉ URL của trang đó sẽ không bị gián đoạn khi bạn thay đổi trang đó. Url- rewriting sẽ giúp bạn làm theo địa chỉ trang web mới mà ko gây ảnh hưởng đến trình duyệt
Để trang web của bạn tăng thêm khả năng “được tìm thấy” và được trả về các kết quả trên các máy tìm kiếm như google hay yahoo…URL Rewriting sẽ làm điều đó trở nên dễ dàng sẽ làm tăng lên sự tình cờ khi một ai đó tìm kiếm và click vào địa chỉ đó. Ví dụ như địa chỉ weblogs.asp.net/chan thay cho weblogs.asp.net/chan/default.aspx vì vậy sẽ làm tăng thêm khả năng “được tìm thấy”của trang web.
Hướng dẫn 1: Sử dụng tham số Request.PathInfo thay cho QueryStrings
Các bạn hãy nhìn các địa chỉ URL dưới đây:
http://www.store.com/products.aspx/Books
http://www.store.com/products.aspx/DVDs
http://www.store.com/products.aspx/CDs
Hãy để ý, tất cả các địa chỉ trên đều không có Querystring thay vào đó là một giá trị tham số được truyền vào sau Products.aspx. Một công cụ tìm kiếm tự động sẽ hiểu đó là 3 địa chỉ URL khác nhau chứ không phải một địa chỉ với 3 giá trị vào (Công cụ tìm kiếm sẽ bỏ qua phần đuôi file và coi nó như một kí tự trong địa chỉ URL đó)
Để làm điều đó, bạn chỉ cần sử dụng thuộc tính Request.PathInfo sẽ trả về nội dung từng phần của trang theo địa chỉ URL. Do đó với 3 địa chỉ URL ở trên thì Request.PathInfo sẽ trả về “/Books”, "/DVDs", và "/CDs".
Bạn có thể tạo một hàm lấy các danh mục như sau (dùng VB.Net)
Function GetCategory() As String
If (Request.PathInfo.Length = 0) Then
Return ""
Else
Return Request.PathInfo.Substring(1)
End If
End Function
Bạn có thể download file đính kèm bài viết này để được minh họa rõ hơn (UrlRewrite_PathIforApproach).
Hướng dấn 2: Sử dụng một HttpModule để thực hiện URL Rewriting
Một ưu điểm của Request.PathInfo là hàm HttpContext.RewritePath(). Hàm này sẽ giúp lập trình viên có thể rewrite đường dẫn của một địa chỉ URL và ASP.NET tiếp tục xử lý yêu cầu sử dụng đường dẫn mới nhất.
Ví dụ chúng ta có thể sử dụng cả 3 địa chỉ URL sau:
http://www.store.com/products/Books.aspx
http://www.store.com/products/DVDs.aspx
http://www.store.com/products/CDs.aspx
Trông có vẻ như là 3 trang khác nhau của một site (thực sự hấp dẫn với các công cụ tìm kiếm). Sử dụng hàm HttpContext.RewritePath() chúng ta sẽ rewrite được đường dẫn. Khi máy công cụ bắt được trang thay vì nó chỉ gọi đến Products.aspx nó sẽ gọi đến các danh mục như là một Querystring hay một biến PathInfo. Ví dụ:
void Application_BeginRequest(object sender, EventArgs e) {
string fullOrigionalpath = Request.Url.ToString();
if (fullOrigionalpath.Contains("/Products/Books.aspx")) {
Context.RewritePath("/Products.aspx?Category=Books");
}
else if (fullOrigionalpath.Contains("/Products/DVDs.aspx")) {
Context.RewritePath("/Products.aspx?Category=DVDs");
}
}
Đoạn code trên hơi thủ công và có thể sẽ làm bạn mệt mỏi và dễ phát sinh lỗi. Đây là một ví dụ hướng dẫn dùng UrlRewriter.Net module trong ứng dụng Web.confige để có thể ánh xạ những địa chỉ URL trên về một địa chỉ Products.aspx,
<?xml version="1.0"?>
<configuration>
<configSections>
<section name="rewriter"
requirePermission="false"
type="Intelligencia.UrlRewriter.Configuration.Rewr iterConfigurationSectionHandler, Intelligencia.UrlRewriter" />
</configSections>
<system.web>
<httpModules>
<add name="UrlRewriter" type="Intelligencia.UrlRewriter.RewriterHttpModule , Intelligencia.UrlRewriter"/>
</httpModules>
</system.web>
<rewriter>
<rewrite url="~/products/books.aspx" to="~/products.aspx?category=books" />
<rewrite url="~/products/CDs.aspx" to="~/products.aspx?category=CDs" />
<rewrite url="~/products/DVDs.aspx" to="~/products.aspx?category=DVDs" />
</rewriter>
</configuration>
Đoạn code trên đã cung cấp cả regular expression và kiểm tra địa chỉ URL (Để tránh bạn phải viết nhiều đoạn code trong file web.config. Để tránh việc bạn phải viết những đoạn code cố định, bạn có thể re-write những quy tắc như dưới đây để lấy ra cách danh mục từ địa chỉ URL cho mỗi xâu : "/products/[category].aspx"
<rewriter>
<rewrite url="~/products/(.+).aspx" to="~/products.aspx?category=$1" />
</rewriter>
Cách viết trên thoáng hơn rất nhiều.
Bạn có thể download file đính kèm là ví dụ đã được xây dựng để minh họa cho việc sử dụng kĩ thuật UrlRewriter.Net module (file đính kèm cuối bài viết UrlRewrite_HttpModules1.zip)
http://www.itgatevn.com.vn/index.asp...d=116&id=20312
daily .iNGA .com .vn kinh doanh liên kết.
Bookmarks