【问题标题】:Asp.net MVC SEO Friendly URLAsp.net MVC SEO 友好 URL
【发布时间】:2013-02-14 05:53:52
【问题描述】:
【问题讨论】:
标签:
asp.net
asp.net-mvc-3
url-rewriting
asp.net-mvc-routing
【解决方案2】:
请尝试以下解决方案。在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
}
【解决方案3】:
您可以通过这种方式将 Route 添加到您的 MVC 路由引擎 -
在Global.asax.cs
routes.MapRoute(
"Product",
"{controller}/{productId}/{productName}",
new { controller = "Product", action = "Index" },
new { productId = UrlParameter.Optional , productName = UrlParameter.Optional }
);
这将允许您拥有像
这样的 URL
www.domain.com/productid/productname
你可能无法实现的原因
www.domain.com/productname
产品名称不是标识符,不能用于唯一地查找记录。您需要在 url 中添加一个标识符。
Ex - 在 SO 中查看此问题的 URL,它具有 ID,然后附加 SEO 友好测试。
【解决方案4】:
在 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
【解决方案5】:
复制以下代码并粘贴进去。{ routes.MapRoute }
routes.MapRuote
{
name: "productname",
routeTempalate: "services {controller}{aciton}{id}
defaults: new (id = RouteParameter.Optionl;)
}
但是对于您而言,将 "routeTemplate" 替换为您的要求。对你来说,它看起来像这样:
routeTemplate: "services{controller}/{productname}"
希望对你有所帮助。