Asp.net MVC SEO友好URL

时间:2013-02-28 06:18:49

标签: asp.net asp.net-mvc-3 url-rewriting asp.net-mvc-routing

我想为我的ASP.NET MVC网站实现一个SEO友好的URL。

目前我的网址如下:

http://www.domain.com/product?id=productid

但现在我想重写我的网址:

http://www.domain.com/productname

所以,任何人都可以帮助我......

5 个答案:

答案 0 :(得分:14)

这是首发的最佳文章 - > SEO Friendly URls
本文还解释了如何删除空格和短划线。

答案 1 :(得分:10)

请尝试使用以下解决方案。在global.asax.cs

routes.MapRoute(
    "Product",
    "{productName}",
    new { controller = "Product", action = "Index" },
    new { productName = UrlParameter.Optional  }
);

需要在productName中保持唯一性,并在产品控制器的索引操作中获取记录(即产品控制器:

public ActionResult index(string productName)
{
     //do something regarding get product by productname
}

答案 2 :(得分:8)

您可以以这种方式向您的MVC路由引擎添加路由 -

Global.asax.cs

routes.MapRoute(
    "Product",
    "{controller}/{productId}/{productName}",
    new { controller = "Product", action = "Index" },
    new { productId = UrlParameter.Optional , productName = UrlParameter.Optional  }
);

这将允许您拥有类似

的网址
www.domain.com/productid/productname

您可能或可能无法实现的原因

www.domain.com/productname

是productname不是标识符,不能用于唯一地查找记录。您需要在网址中使用标识符。

Ex - 在SO中查看此问题的URL,它有ID,然后附加SEO友好测试。

答案 3 :(得分:0)

在Global.asax中创建一个新路由来处理:

    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内置了路由,因此不需要Url Rewriter。

更多详情here

答案 4 :(得分:0)

复制以下代码并粘贴进去。{ routes.MapRoute }

routes.MapRuote
{
   

       name: "productname",
       routeTempalate: "services {controller}{aciton}{id}
       defaults: new (id = RouteParameter.Optionl;)

}

但是对于您来说,将 "routeTemplate" 替换为您的要求。对你来说,它看起来像这样:

routeTemplate: "services{controller}/{productname}"

希望能帮到你。