我想为我的 ASP.NET MVC 网站实现一个 SEO 友好的 URL。
目前我有一个像这样的网址:
http://www.domain.com/product?id=productid
但现在我想重写我的网址,如:
http://www.domain.com/productname
所以请任何人都可以在上面帮助我......
我想为我的 ASP.NET MVC 网站实现一个 SEO 友好的 URL。
目前我有一个像这样的网址:
http://www.domain.com/product?id=productid
但现在我想重写我的网址,如:
http://www.domain.com/productname
所以请任何人都可以在上面帮助我......
这是初学者的最佳文章->
SEO Friendly URls
该文章还解释了如何删除空格和破折号。
请尝试以下解决方案。在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
}
您可以通过这种方式将 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
是 productname 不是标识符,不能用于唯一地查找记录。您需要在 url 中添加一个标识符。
例如 - 在 SO 中查看此问题的 URL,它具有 ID,然后附加 SEO 友好测试。
在 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。
更多细节在这里
复制以下代码并将其粘贴进去。{ routes.MapRoute }
routes.MapRuote
{
name: "productname",
routeTempalate: "services {controller}{aciton}{id}
defaults: new (id = RouteParameter.Optionl;)
}
但是对于您来说,"routeTemplate"
用您的要求替换。对你来说,它看起来像这样:
routeTemplate: "services{controller}/{productname}"
我希望这会帮助你。