Asp.net mvc MVC5,真正的SEO友好路线
我想让我的网址搜索引擎友好。 我已经看过很多关于这个主题的文章和其他帖子,但所有的文章最后都有类似的URL: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
/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是否等于从url接收的参数。如果不是,您可以使用301状态重定向到正确的url,就像stackoverflow一样。您好,谢谢您的建议。它只是不起作用,我仍然得到“资源找不到”。你能发送应该处理路由和你使用的路由定义的控制器操作的签名吗?routes.MapRoute(“默认值”),//路由名称“{Brand}/{Details}”,//带有参数的URL new{controller=“ProductViews”,action=“Details”,Brand=urlparmeter.Optional,Details=urlparmeter.Optional}//参数默认值);公共类ProductViewsController:Controller公共操作结果详细信息(字符串品牌,字符串详细信息)@user3305839路由和操作都是正确的,我也在我的计算机上尝试过,它正在工作。如果存在其他路由定义,您的问题可能是路由的顺序。如果不是这个问题,您的问题肯定与路由的定义无关。我想stackoverflow中存在一些路由问题线程。有关详细信息,请参阅最灵活的方法。