我想为我的ASP.NET MVC网站实现一个SEO友好的URL。
目前我的网址如下:
http://www.domain.com/product?id=productid
但现在我想重写我的网址:
http://www.domain.com/productname
所以,任何人都可以帮助我......
答案 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}"
希望能帮到你。