我想让我的网址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 = "" }
有什么建议吗?
答案 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。这是一个更好的方法。我的评论是:
如果您的网站长大了,您可以使用不同的ID来创建相同的子段,这不仅限于可能出现的问题。我知道这对seo不利,但它会发生。
在后端,您可以具有更好的性能来查找具有ID及其对于访问量较高的网站的重要性的产品。
您很容易更换弹头。如果您更改了Slug,则旧链接将重定向到新链接,并且您将没有任何断开的链接。
在后端查找具有ID的产品,然后检查数据库以查看slug是否等于从url接收到的参数。如果不是,则可以使用301状态重定向以更正URL,就像stackoverflow一样。