【问题标题】:Correct optional route parameters on browsing url更正浏览 url 上的可选路由参数
【发布时间】:2014-12-26 05:56:45
【问题描述】:

我正在从事电子商务项目 (Asp.Net Mvc3)。下面提到了我的产品和类别路线

routes.MapLocalizedRoute(
  "Product",
  "p/{productId}/{SeName}",
   new { controller = "Catalog", action = "Product", SeName = UrlParameter.Optional },
);

routes.MapLocalizedRoute(
  "Product", 
  "c/{categoryId}/{SeName}",
  new { controller = "Catalog", action = "Category", SeName = UrlParameter.Optional },
);

当使用浏览 url http://mysite.in/p/123/my-product 时,它会重定向到正确的产品,并且类别也会发生同样的事情。

现在,当我提供错误的 SeName 或只是从 url 中删除 SeName 时,它​​会重定向到正确的产品/类别,这是正确的。但我希望附加有效的 SeName,即如果 url 中有错误或没有 SeName,则应在 url 中添加代表产品/类别的 sename。上述功能对网站 SEO 有影响吗?

Stackoverflow 也有同样的想法,即虽然 SeName 是可选的,但如果没有提供,它会附加 seName。

如果有人处理过同样的问题,请回复。

【问题讨论】:

  • 这通常使用操作过滤器来完成。 This blog,虽然不是完全相同的问题,但应该为您指明正确的方向。
  • @StephenMuecke 我认为这是我想要的,但是每次调用 db 以检查 actionfilter 中的 sename 并在需要时替换是否可行
  • 除非您在某处缓存 ID/Name 值,否则这将是您唯一的选择(我怀疑它超过几毫秒)
  • @StephenMuecke 感谢您的宝贵指导。您可以发表您的评论作为答案,以便我接受。
  • @StephenMuecke 这两种方法中的任何一种都会影响网站的 SEO,如果您有相关知识,请分享。

标签: asp.net asp.net-mvc-3 url-routing


【解决方案1】:

这被称为“slug”,通常在操作过滤器中处理。 Phil Haack 有一篇很好的文章 Manipulating Action Method Parameters 详细解释了它。基本概念是处理过滤器OnActionExecuting方法来提取ID参数的路由值,然后从数据库中查找相应的名称并将该值添加到Name参数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-12
    • 2016-07-17
    • 1970-01-01
    • 2016-09-09
    • 2020-02-09
    • 2019-09-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多