MVC 5,真正的SEO友好路线

时间:2016-05-25 07:10:37

标签: asp.net-mvc seo

我想让我的网址SEO友好。 我已经看过很多关于这个主题的文章和其他帖子,但所有这些文章都以网址为例:/Products/34/my-handbag

我想最终得到像/gucci/my-handbag

这样的网址

我已经拥有控件来实际从名称中获取产品" gucci"和#34;我的手提包",我只需要我的路由就可以将我发送给Products控制器。

这就是我现在正在处理的事情:

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

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

你正走在正确的道路上。您可以生成以下网址: 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中搜索该产品。如果你必须在网址的末尾添加一些唯一的数字,如; 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
);

希望它有所帮助。

答案 1 :(得分:0)

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

/Products/34/my-handbag
/product/{id}/slug

您可以删除stackoverflow中的最后一个单词并输入。该页面会将您重定向到当前正确的URL。这是一个更好的方法。我的评论是:

  1. 如果您的网站长大了,您可以使用不同的ID来创建相同的子段,这不仅限于可能出现的问题。我知道这对seo不利,但它会发生。

  2. 在后端,您可以具有更好的性能来查找具有ID及其对于访问量较高的网站的重要性的产品。

  3. 您很容易更换弹头。如果您更改了Slug,则旧链接将重定向到新链接,并且您将没有任何断开的链接。

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