Hiển thị kết quả từ 1 đến 8 / 8
  1. #1
    Tham gia
    03-05-2007
    Location
    Hà Nội, Việt Nam
    Bài viết
    217
    Like
    0
    Thanked 13 Times in 12 Posts

    Url re-write cho web tin tức

    Mình đang thực hành 1 site tin tức đơn giản, mình có đọc được cách làm Url re-write trên internet mình đã thực hành và làm thành công nhưng không làm sao để cho nó theo ý mình được. Mình thấy các website tin tức họ làm thế nào để tên đường link chính là tên của tiêu đề tin,họ làm thế nào để được như vậy thế nhỉ? giúp mình với!

    [=========> Bổ sung bài viết <=========]

    không ai giúp tui ư hix...hix
    Được sửa bởi hkv8x lúc 22:56 ngày 13-09-2008 Reason: Bổ sung bài viết
    Quote Quote

  2. #2
    Tham gia
    24-02-2005
    Location
    Sai Gon
    Bài viết
    398
    Like
    11
    Thanked 17 Times in 12 Posts

    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.

  3. #3
    Tham gia
    03-05-2007
    Location
    Hà Nội, Việt Nam
    Bài viết
    217
    Like
    0
    Thanked 13 Times in 12 Posts
    Cái này e thực hành thành công rồi, nhưng mà cái ID bài viết của e không phải là chữ mà là số 1,2,3,4... E muốn lấy tiêu đề của bài viết cơ. hix...hix

  4. #4
    Tham gia
    19-09-2004
    Bài viết
    52
    Like
    0
    Thanked 0 Times in 0 Posts
    cái này khó gì đâu nhỉ. các bác tham khảo
    http://222.255.237.67/4wd4life/Stories
    http://222.255.237.67/4wd4life/gorms...e_York_or_Bust
    Suy nghỉ chút là bác tìm ra cách làm thôi. good luck. site này mình làm

  5. #5
    Tham gia
    03-05-2007
    Location
    Hà Nội, Việt Nam
    Bài viết
    217
    Like
    0
    Thanked 13 Times in 12 Posts
    Hix, bác chỉ cách làm luôn đi, e nhìn link thì có ích gì đâu.

  6. #6
    Tham gia
    03-05-2007
    Location
    Hà Nội, Việt Nam
    Bài viết
    217
    Like
    0
    Thanked 13 Times in 12 Posts
    Không ai quan tâm đến vấn đề nay sao. hix hix

  7. #7
    Tham gia
    03-05-2007
    Location
    Hà Nội, Việt Nam
    Bài viết
    217
    Like
    0
    Thanked 13 Times in 12 Posts
    vẫn chưa có hồi âm của các cao thủ. hixhixx

  8. #8
    Tham gia
    23-08-2008
    Location
    HCM
    Bài viết
    1
    Like
    0
    Thanked 0 Times in 0 Posts
    Quote Được gửi bởi hkv8x View Post
    Mình đang thực hành 1 site tin tức đơn giản, mình có đọc được cách làm Url re-write trên internet mình đã thực hành và làm thành công nhưng không làm sao để cho nó theo ý mình được. Mình thấy các website tin tức họ làm thế nào để tên đường link chính là tên của tiêu đề tin,họ làm thế nào để được như vậy thế nhỉ? giúp mình với!

    [=========> Bổ sung bài viết <=========]

    không ai giúp tui ư hix...hix
    Bạn có thể viết một hàm để convert title sang tiếng việt không dấu làm Url re-write. Bạn có thể tham khảo hàm sau và tùy biến nó theo ý của mình.

    public class chuyendoi
    {
    const string FindText = "áàảãạâấầẩẫậăắằẳẵặđ èẻẽẹêếềểễệíìỉĩịóòỏõ ọôốồổỗộơớờởỡợúùủũụ ứừửữựýỳỷỹỵÁÀẢÃẠÂẤẦ ẨẪẬĂẮẰẲẴẶĐÉÈẺẼẸÊẾỀ ỄỆÍÌỈĨỊÓÒỎÕỌÔỐỒỔỖỘ ỚỜỞỠỢÚÙỦŨỤƯỨỪỬỮỰÝỲ ỶỸỴ ";
    const string ReplText = "aaaaaaaaaaaaaaaaadeeeeeeeeeeeiiiiiooooooooooooooo oouuuuuuuuuuuyyyyyAAAAAAAAAAAAAAAAADEEEEEEEEEEEIII IIOOOOOOOOOOOOOOOOOUUUUUUUUUUUYYYYY" ;
    public chuyendoi()
    {
    //
    // TODO: Add constructor logic here
    //
    }
    public static string convertTV(string strVietNamese)
    {
    int index = -1;
    while ((index = strVietNamese.IndexOfAny(FindText.ToCharArray())) != -1)
    {
    int index2 = FindText.IndexOf(strVietNamese[index]);
    strVietNamese = strVietNamese.Replace(strVietNamese[index], ReplText[index2]);
    }
    return strVietNamese;
    }

    Đây là site tin tức mình đã làm:

    http://doanhnhantimes.com
    http://investchannel.asia

    nếu bạn vẫn chưa làm được thì pm mình sẽ hướng dẫn cho :d.

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •