我认为 stackoverflow 是最佳实践。
因为当您删除 url 末尾的单词时,它会以 301 状态重定向到当前 url。
domain.com/product/{id}/{slug}
它有一些好处:
- 当您更改页面的 slug 时,它将重定向到正确的 url
- 您的网址很短,但末尾有 seo 友好的字词。
- 在后端,您使用 id 查找产品,但您有搜索引擎的 slug
- 您可以为不同的页面使用相同的 slug。我现在对 seo 不利,但您可以为 2 种产品使用相同的 slug
代码就像@Martin
routes.MapRoute(
name: "Cafes",
url: "cafe/{id}/{FriendlyUrl}",// how send array in metod get
defaults: new { controller = "cafe", action = "index", id = UrlParameter.Optional, FriendlyUrl = UrlParameter.Optional }//, id = UrlParameter.Optional
);
在动作控制器中,您应该使用收到的参数检查产品的数据库 slug。如果它们不是相同的重定向状态为 301 以更正 url。
重定向代码:
return RedirectToActionPermanent("index", new
{
id = CafeParent.CafeID,
FriendlyUrl = CafeParent.CafeSlug.Trim()
});
RedirectToActionPermanent 重定向,状态为 301。当您执行此操作时,搜索引擎会发现此 url 已更改为您重定向的内容。