2009-08-25 53 views
6

Tôi tự làm quen với ASP.Net-MVC và tôi đã cố gắng hoàn thành một số tác vụ phổ biến mà tôi đã thực hiện trong quá khứ với biểu mẫu web và chức năng. Trên các tác vụ phổ biến nhất tôi cần làm là tạo các url thân thiện với SEO, mà trước đây có nghĩa là làm một số url viết lại để xây dựng chuỗi truy vấn vào đường dẫn thư mục.Làm cách nào để tạo các url thân thiện với SEO trong ASP.Net-MVC

ví dụ: www.somesite.com/productid/1234/widget

hơn: www.somesite.com?productid=1234 & name = Widget

phương pháp gì để tôi sử dụng để thực hiện điều này trong ASP.Net-MVC?

Tôi đã tìm kiếm xung quanh, và tất cả tôi đã tìm thấy được điều này, mà một trong hai Tôi không hiểu đúng, hoặc không thực sự trả lời câu hỏi của tôi:

SEO URLs with ASP.NET MVC

Trả lời

6

Tạo một con đường mới trong toàn cầu.asax để xử lý việc này:

 routes.MapRoute(
      "productId",     // Route name 
      "productId/{id}/{name}",  // URL with parameters 
      new { controller = "Home", action = "productId", id = 1234, name = widget } // Parameter defaults 
     ); 

Asp.Net MVC có định tuyến được tích hợp sẵn, vì vậy không cần bộ ghi đè url.

10

MVC là viết tắt của " model View Controller" và trong khi những khái niệm này được không phải những gì bạn đang hỏi về, bạn thường có thể dây lên URL như bạn thấy ở trên khá dễ dàng

vì vậy, ví dụ bằng cách mặc định cái nhìn của URL như sau

http://www.somesite.com/controller/view/ 

nơi bộ điều khiển tham chiếu đến lớp bộ điều khiển trong dự án của bạn và chế độ xem đề cập đến kết hợp trang/phương pháp trong bộ điều khiển. Vì vậy, ví dụ bạn có thể viết quan điểm để có trong một đầu vào và tìm kiếm một cái gì đó như sau

http://www.somesite.com/widget/productid/1234/ 

Bây giờ như đối với SEO thân thiện URL, đó chỉ là đường vô dụng. Bạn tác giả điều khiển của bạn như vậy mà nó thêm vô hại cruft đến cuối URL.

Vì vậy, ví dụ, bạn sẽ nhận thấy rằng một trong ba cách sau đây để có được cho câu hỏi này tạo ra kết quả tương tự:

How do I create SEO-Friendly urls in ASP.Net-MVC

How do I create SEO-Friendly urls in ASP.Net-MVC

How do I create SEO-Friendly urls in ASP.Net-MVC

Stack Overflow là tác giả giá trị tuyến đường của chúng sao cho bit xuất hiện sau ID câu hỏi không thực sự cần thiết.

Vậy tại sao có nó ở đó? Để tăng PageRank của Google. Google PageRank dựa vào nhiều thứ, tổng số tiền trong số đó là bí mật, nhưng một trong những điều mọi người đã chú ý là, tất cả những thứ khác đều bình đẳng, xếp hạng URL văn bản mô tả cao hơn. Vì vậy, đó là lý do tại sao Stack Overflow sử dụng văn bản đó sau số câu hỏi.

1

Điều quan trọng là xử lý các url cũ. Tôi có một cơ sở dữ liệu của các url cũ và mới và tôi chuyển hướng với mã sau đây;

public class AspxCatchHandler : IHttpHandler, IRequiresSessionState 
{ 

    #region IHttpHandler Members 

    public bool IsReusable 
    { 
     get { return true; } 
    } 

    public void ProcessRequest(HttpContext context) 
    { 
     if (context.Request.Url.AbsolutePath.Contains("aspx") && !context.Request.Url.AbsolutePath.ToLower().Contains("default.aspx")) 
     { 
      string strurl = context.Request.Url.PathAndQuery.ToString(); 
      string chrAction = ""; 
      string chrDest = ""; 

      try 
      { 

       DataTable dtRedirect = SqlFactory.Execute(
        ConfigurationManager.ConnectionStrings["emptum"].ConnectionString, 
        "spGetRedirectAction", 
        new SqlParameter[] { 
         new SqlParameter("@chrURL", strurl) 
        }, 
        true); 

       chrAction = dtRedirect.Rows[0]["chrAction"].ToString(); 
       chrDest = dtRedirect.Rows[0]["chrDest"].ToString(); 

       chrDest = context.Request.Url.Host.ToString() + "/" + chrDest; 
       chrDest = "http://" + chrDest; 


       if (string.IsNullOrEmpty(strurl)) 
        context.Response.Redirect("~/"); 
      } 
      catch 
      { 
       chrDest = "/";// context.Request.Url.Host.ToString(); 
      } 

      context.Response.Clear(); 
      context.Response.Status = "301 Moved Permanently"; 
      context.Response.AddHeader("Location", chrDest); 
      context.Response.End(); 

     } 
     else 
     { 
      string originalPath = context.Request.Path; 
      HttpContext.Current.RewritePath("/", false); 
      IHttpHandler httpHandler = new MvcHttpHandler(); 
      httpHandler.ProcessRequest(HttpContext.Current); 
      HttpContext.Current.RewritePath(originalPath, false); 
     } 
    } 

    #endregion 
} 

niềm hy vọng này là hữu ích

3

Hãy cẩn thận khi thực hiện các tuyến đường với những cái tên trong đó, bạn cần phải xác nhận rằng tên vào là đúng hoặc bạn có thể kết thúc làm hại bạn SEO Ranking trên trang bằng cách có nhiều URI chia sẻ cùng một nội dung, hoặc thiết lập đúng chuẩn hoặc có bộ điều khiển của bạn phát hành 301 khi truy cập URI 'sai'.

Một writeup nhanh chóng tôi đã làm trên các giải pháp sau có thể được tìm thấy tại địa chỉ:
http://mynameiscoffey.com/2010/12/19/seo-friendly-urls-in-asp-net-mvc/

Một số thông tin về quần áo giáo sĩ:
http://googlewebmastercentral.blogspot.com/2009/02/specify-your-canonical.html

+0

Rất mát mẻ, cảm ơn cho đầu vào. –

Các vấn đề liên quan