Asp.net mvc MVC5,真正的SEO友好路线

Asp.net mvc MVC5,真正的SEO友好路线,asp.net-mvc,seo,Asp.net Mvc,Seo,我想让我的网址搜索引擎友好。 我已经看过很多关于这个主题的文章和其他帖子,但所有的文章最后都有类似的URL:/Products/34/my手提包 我想以如下URL结尾:/gucci/my手提包 我已经有了从名字“gucci”和“my手提包”中实际获取产品的控件,我只需要我的路由将我发送到产品控制器 这就是我现在正在处理的问题: routes.MapRoute( name: "ProductDetails", url: "{brand}/{title}", defaults

我想让我的网址搜索引擎友好。 我已经看过很多关于这个主题的文章和其他帖子,但所有的文章最后都有类似的URL:
/Products/34/my手提包

我想以如下URL结尾:
/gucci/my手提包

我已经有了从名字“gucci”和“my手提包”中实际获取产品的控件,我只需要我的路由将我发送到
产品
控制器

这就是我现在正在处理的问题:

routes.MapRoute(
    name: "ProductDetails",
    url: "{brand}/{title}",
    defaults: new { controller = "ProductViews", action = "Details", brand = "", title = "" }

有什么建议吗?

你走对了路。您可以生成如下url: www.domain.com/gucci/some-gucci-product-name通过以下途径

routes.MapRoute(
 "Default", // Route name
 "{Brand}/{Details}", // URL with parameters
 new { controller = "ProductViews", action = "Details", Brand = UrlParameter.Optional, Details = UrlParameter.Optional }// Parameter defaults
);
您可以处理标题,在db中搜索产品(如果产品是唯一的)。如果你必须在url的末尾添加一些唯一的数字,比如; www.domain.com/gucci/some-gucci-product-name-13456

routes.MapRoute(
 "Default", // Route name
 "{Brand}/{Details}-{id}", // URL with parameters
 new { controller = "ProductViews", action = "Details", Brand = UrlParameter.Optional, Details = UrlParameter.Optional, id=UrlParameter.Optional }// Parameter defaults
);

希望能有所帮助。

@ali是对的,但这种结构更好-

/Products/34/my-handbag
/product/{id}/slug
您可以删除stackoverflow中的最后一个单词并输入。该页面会将您重定向到当前正确的url。这是一个更好的方法。我的意见是:

  • 如果你的网站成长起来了,你可以有不同ID的同一个slug,这并不局限于可能出现的问题。我知道这对搜索引擎优化不好,但它会发生的

  • 在后端,您可以有更好的性能来查找ID为的产品,它对于高访问量的网站非常重要

  • 你换鼻涕虫很容易。若你们改变slug,旧的链接将重定向到新的链接,你们将不会有任何断开的链接


  • 在后端查找ID为的产品,然后检查数据库以查看slug是否等于从url接收的参数。如果不是,您可以使用301状态重定向到正确的url,就像stackoverflow一样。

    您好,谢谢您的建议。它只是不起作用,我仍然得到“资源找不到”。你能发送应该处理路由和你使用的路由定义的控制器操作的签名吗?routes.MapRoute(“默认值”),//路由名称“{Brand}/{Details}”,//带有参数的URL new{controller=“ProductViews”,action=“Details”,Brand=urlparmeter.Optional,Details=urlparmeter.Optional}//参数默认值);公共类ProductViewsController:Controller公共操作结果详细信息(字符串品牌,字符串详细信息)@user3305839路由和操作都是正确的,我也在我的计算机上尝试过,它正在工作。如果存在其他路由定义,您的问题可能是路由的顺序。如果不是这个问题,您的问题肯定与路由的定义无关。我想stackoverflow中存在一些路由问题线程。有关详细信息,请参阅最灵活的方法。